db.record通过 record(map) 的方式操作表数据

联合创作 · 2023-09-28 11:14

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


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


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


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


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


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


使用


添加依赖



<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;
}
});

6.多数据源



Db.init("jdbc:mysql://host:port/test?characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&serverTimezone=GMT%2B8","root", "xxx");
Db.initAlias("toDb","jdbc:mysql://xxx:3306/test?characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&serverTimezone=GMT%2B8","user","password")

//使用 Db.use 切换数据源
Db.use().find();//默认数据源
Db.use("toDb").find();//指定数据源
浏览 14
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报