通过 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();//指定数据源