orm工具包 jdao
本文导语: jdao是一个轻量级的orm工具包,通过简单配置或者连接数据库提供表名它便可以自动生成与数据库表一一对应的dao类,生成的dao类提供了与SQL无关的增删改查的功能。在复杂的查询SQL中,我建议编程人员自己编写高效的SQL...
jdao是一个轻量级的orm工具包,通过简单配置或者连接数据库提供表名它便可以自动生成与数据库表一一对应的dao类,生成的dao类提供了与SQL无关的增删改查的功能。在复杂的查询SQL中,我建议编程人员自己编写高效的SQL,再通过jdao查询后返回封装好的QureyDao类,很方便的获取数据。在jdao底层,目前有spring的jdbcTemplate实现与我自己封装的jdaoHandlerImpl实现。jdao有支持事务,支持批量插入数据等特性。同时jdao底层数据库操作提供接口,编程人员可以自己实现。
如果你觉得hibernate,ibatis等orm框架过于笨重,不烦试下jdao,它可以在团队开发中规范团队持久层代码,较少开发量,特别在单表操作上基本是对象操作,对于复杂SQL查询也有较好的封装。
一、使用DAO方式操作数据:
查询SQL: select value,rowname from hstest where id between 2 and 10;
jdao对象操作如下:
Hstest t = new Hstest();
t.where(Hstest.ID.BETWEEN(2, 10));
t.query(Hstest.VALUE, Hstest.ROWNAME);
插入SQL: insert into hstest (id,rowname,value) values(1,"donnie","wuxiaodong")
jdao对象操作如下:
Hstest t = new Hstest();
t.setId(1);
t.setRowname("donnie");
t.setValue("wuxiaodong");
t.save();
批量插入SQL: insert into hstest (id,rowname,value) values(1,"donnie1","wuxiaodong1"),(2,"donnie2","wuxiaodong2"),(3,"donnie3","wuxiaodong3")
jdao对象操作如下:
Hstest t = new Hstest();
t.setId(1);
t.setRowname("donnie1");
t.setValue("wuxiaodong1");
t.addBatch();
t.setId(2);
t.setRowname("donnie2");
t.setValue("wuxiaodong2");
t.addBatch();
t.setId(3);
t.setRowname("donnie3");
t.setValue("wuxiaodong3");
t.addBatch();
t.batchForSave();
更新SQL: update hstest set rowname="wuxiaodong",value="wuxiaodong" where id=10
jdao对象操作如下:
Hstest t = new Hstest();
t.setRowname("wuxiaodong");
t.setValue("wuxiaodong");
t.where(Hstest.ID.EQ(10));
t.update();
删除SQL: delete from hstest where id=2
jdao对象操作如下:
Hstest t = new Hstest();
t.where(Hstest.ID.EQ(2));
t.delete();
二、使用QueryDao查询数据,建议用于复杂SQL查询,单表增删改查建议还是使用DAO对象操作。
QueryDao qd = new QueryDao(JdaoHandlerFactory.getDBHandler4c3p0(), "select id,rowname from hstest limit ?,?", 0, 10);
//获取数据方式一
while (qd.hasNext()) {
QueryDao q = qd.next();
//获取字段方式一
System.out.println(q.fieldValue(1) + " " + q.fieldValue(2));
//获取字段方式二
System.out.println(q.fieldValue("id") + " " + q.fieldValue("rowname"));
}
//获取数据方式二
for(QueryDao q:qd.queryDaoList()){
System.out.println(q.fieldValue(1) + " " + q.fieldValue(2));
}