Jfinal 数据操作模块 db.record v 0.0.4 发布

来源: 投稿
作者: 衣旧
2019-05-29

更新内容

添加:

    public static void initAlias(String configName,String jdbcURL, String jdbcUser, String jdbcPassword) {
		init(configName,"com.mysql.cj.jdbc.Driver",jdbcURL,jdbcUser,jdbcPassword,null,null,false);
	}
	
	public static void initAlias(String configName,String jdbcDriver, String jdbcURL, String jdbcUser, String jdbcPassword) {
		init(configName,jdbcDriver,jdbcURL,jdbcUser,jdbcPassword,null,null,false);
	}

修复:初始化数据源名称错误

 

简介:

通过 record(map)的方式操作表数据,似orm非orm,半对像操作。

本类库基于jfinal V1.9改造,写一些简单的功能的时候特别适合使用,比如要转结数据,比如初始数据,相比orm不需要搞一堆对像,相比存sql不需要搞一些insert update。

通过sql语句查询某几个表的数据返回 record,直接将该对像(不是写sql)保存或者更新到一个新表中。这种方式特别省事

apache dbutils对数据库的支持已足够好,但还是略显烦杂,当然也可以基于dbutils实现 jfinal的操作方式

相比 Spring jdbcTemplate 那肯定是少了N多依赖

相比 jdbc操作那肯定方便很多

db.record

通过 record(map)的方式操作表数据,似orm非orm,半对像操作 本类库基于jfinal V1.9 改造

maven 使用

<dependency>
	<groupId>com.liucf</groupId>
	<artifactId>db.record</artifactId>
	<version>0.0.4</version>
</dependency>

示例

1.初始化Db

//初始化数据连接
Db.init("jdbc:mysql://host:port/test?characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&serverTimezone=GMT%2B8","root", "xxx");
//打印sql日志
Db.use().setShowSql(true);

2.查询数据

//简单查询
List<Record> baskets = Db.find("select * from base_basket");
for (Record record : baskets) {
	System.out.println(record.getStr("id"));
	System.out.println(record.toJson());
}

//根据id查询
Record record = Db.findById("base_basket", "001")

//查询首条数据
Db.findFirst("select * from base_basket where id = ?", "001")

//分页查询 count参数决定是否统计总行数
Page<Record> p = Db.paginate(1, 2, "select * from base_basket where id>?", false, "1000");
p.getList();
p.getPageNumber();
p.getPageSize();
p.getTotalPage();
p.getTotalRow();

3.新增

Record r = new Record();
r.set("id", "ddddd");
Db.save("base_basket", r);

4.更新

Record r = new Record();
r.set("id", "ddddd");
Db.update("base_basket", r);
//主键名称非id
//Db.update("base_basket", "id", r);

4.删除

Db.deleteById("base_basket", "001");
//Db.update("delete from base_basket");

5.事务

Db.tx(new TransactionWrap() {
		@Override
		public boolean run() throws SQLException {
			try {
				Record r = new Record();
				r.set("id", "ddddd");
				Db.save("base_basket", r);
				
				r.set("id", "ddddd");
				r.set("remarks", "remarks");
				Db.update("base_basket", "id", r);
			} catch (Exception e) {
				return false;
			}
			return true;
		}
	});
展开阅读全文
9 收藏
分享
加载中
最新评论 (7)
只抽取了一个糟粕出来,这种方式不适合大项目,因为不支持实体重构。正常项目开发还是建议用传统JavaBean的方式。另外这个Record功能在其它ORM工具里也有。例如在NutzDao中类似的实现方式是Chain, 在BeetlSql和jSqlBox中称为Tail。
2019-05-31 03:11
0
回复
举报
有用则用,不适另择。也明确的说了,某些场景下就是不愿意写 java bean 而是通过指定表名直接根据map保存或者更新。不需要写一堆的java bean 或者 insert update语句。如果愿意写实体,何不用mybatis hibernate 或者 ebean jpa 之流。比如就想把一个库的数据抽取到另一个库 这种非常临时的功能 去写几个javabean?再来几个配置?没有碰到适合你的场景 请尽量勿喷糟粕。自己认为有用的东西拿出来分享 我认为这都是一种好事。
2019-05-31 08:59
0
回复
举报
抱歉,“糟粕”这个词用的确实不妥,收回我的评论。
2019-06-01 18:59
0
回复
举报
可以使用在普通项目上面吗
2019-05-29 13:48
0
回复
举报
问题不大。如果在现有的项目上使用 可以直接 使用 Db.init(datasource) 初始化
2019-05-29 14:35
0
回复
举报
更多评论
8 评论
9 收藏
分享
返回顶部
顶部