jdao1.1.6 发布,轻量级 ORM 工具包

栏目: 软件资讯 · 发布时间: 7年前

内容简介:jdao1.1.6已发布,jdao是一个Java的轻量级orm工具包,根据表名可以生成与之对应的dao类,同时也支持原生sql语句操作。 本次更新如下: 增加了DBUtils 类,具体使用请参考 DaoTest,RsScanTest 修复部分bug,数据源...

jdao1.1.6已发布,jdao是一个 Java 的轻量级orm工具包,根据表名可以生成与之对应的dao类,同时也支持原生 sql 语句操作。

本次更新如下:

  1. 增加了DBUtils 类,具体使用请参考 DaoTest,RsScanTest

  2. 修复部分bug,数据源设置做了修改。请参考 DaoTest,RsScanTest

v1.1.6 
jdao 初始化: 

DaoFactory.setDefaultDataSource(getDataSource());

jdao初始化 设置数据源,一步完成。 

getDataSource()获取数据源方法: 
如:ActionTest1_1_2.java 中: 

public static DataSource getDataSource() throws Exception { 
Properties p = new Properties(); 
p.load(ActionTest1_1_2.class.getClassLoader().getResourceAsStream("druid.properties")); 
return DruidDataSourceFactory.createDataSource(p);}

例如:对 数据库表名为 hstest的操作 

CREATE TABLE hstest ( 
id int(10) DEFAULT NULL, 
value varchar(50) DEFAULT '', 
rowname varchar(50) DEFAULT '' 
)

一.生成dao对象,生成Hstest.java 

public void createDao() throws Exception { 
Class.forName("com.mysql.jdbc.Driver"); 
String driverUrl = "jdbc:mysql://127.0.0.1:3306/test"; 
String path = System.getProperty("user.dir") + "/test/com/jdao/action"; 
CreateDaoUtil.createFile("com.jdao.action", "hstest",path,DriverManager.getConnection(driverUrl, "root", "123456"), "utf-8"); 
//com.jdao.action 为 Hstest的包名 
//hstest为表名 
}

二.对Hstest对象的操作 查询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();

三.支持SQL操作 DBUtils 

DBUtils<?> db=new DBUtils(); 
db.select("select * from hstest where id=? limit 1",1); 
System.out.println(db.getString("value")); 
int i = db.execute("insert into hstest(rowname,value)values(?,?)",1,2);

四.自定义类继承 DBUtils 
任何子类继承自DBUtils 都可以设置与其对应的数据源,同时支持sql编写,支持翻页 
如:

class RsTest extends DBUtils {} 
//翻页 
public static void testSelectListPage() throws Exception { 
RsTest rt = new RsTest(); 
// 分页查询方法 
rt.selectListPage(0, 20, "select * from hstest"); 
System.out.println(rt.rsList().size()); 
// selectListPage 会返回 totalcount 
List list = rt.rsList(); 
for (RsTest r : list) { 
System.out.println(r.getString("value")); 
} 
}

//单行返回 

public static void testSelect() throws Exception { 
RsTest rt = new RsTest(); 
rt.select("select * from hstest where id=?", 1); 
System.out.println(rt.getString("value")); 
rt.select("select * from hstest where id=?", 2); 
System.out.println(rt.getString("value")); 
}

//插入 

public static void testInsert() throws Exception { 
RsTest rt = new RsTest(); 
System.out.println(rt.execute("insert into hstest(value,rowname)values(?,?),(?,?) ", "wu1", "11", "wu2", "22")); 
}

//生成dao 的翻页测试类 

public static void testPageTurn() throws Exception { 
Hstest ht = new Hstest(); 
ht.setPageTurn(true); //翻页 
ht.where(Hstest.ID.GE(0)); 
List list = ht.query(); 
System.out.println("totalcount:" + list.get(0).getTotalcount()); 
for (Hstest h : list) { 
System.out.println(h.getRowname() + " " + h.getValue()); 
} 
}

//PageDao类测试 

public static void testPageDao() throws Exception { 
Hstest ht = new Hstest(); 
ht.where(Hstest.ID.GE(1)); 
PageDao pd = ht.selectListPage(); 
System.out.println("totalcount:" + pd.getTotalcount()); 
List list = pd.getList(); 
for (Hstest h : list) { 
System.out.println(h.getRowname() + " " + h.getValue()); 
} 
}

五.事务 

Transaction t = new Transaction(getDataSource()); 
Hstest hstest = new Hstest(); 
hstest.setTransaction(t); 
hstest.setRowname("wu"); 
hstest.setValue("dong"); 
hstest.save(); 
Hstest hstest2 = new Hstest(); 
hstest2.setTransaction(t); 
hstest2.setRowname("wu2"); 
hstest2.setValue("dong2"); 
hstest2.save(); 
DBUtils rt = new DBUtils(); 
rt.setTransaction(t); 
rt.execute("insert into hstest(rowname,value)values(?,?)", 1, 2); 
t.rollBackAndClose();

【声明】文章转载自:开源中国社区 [http://www.oschina.net]


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据压缩导论(第4版)

数据压缩导论(第4版)

[美] Khalid Sayood / 贾洪峰 / 人民邮电出版社 / 2014-1 / 129.00

数据压缩已经成为信息革命的一门支撑技术,这场革命已经改变了我们的生活,而在此过程中,数据压缩也变得几乎无处不在。从MP3播放器到智能手机,再到数字电视和数字电影,数据压缩几乎成了所有信息技术的必备要素。 近年来,以大数据为标志的互联网技术高歌猛进。数据规模大、产生速度快、来源多样等特性,导致数据存储和处理都前所未有地复杂。《数据压缩导论(第4版)》作为迄今为止数据压缩领域最全面而深入的著作,......一起来看看 《数据压缩导论(第4版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器