JadePool 据说效率相当之高

 在HashMap关系数据映射技术产品JadePool中,ProcessVO是cn.jadepool.sql.Jdml实现类,实现事务型数据库DML操作。统一抛出SQLException异常。创建该对象后,由用户决定开启事务、处理异常。Jade是简化的ProcessVO应用类,对异常进行了捕获。创建该对象后,便开启了数据库事务。 在大多数情况下推荐使用Jade,它超级简便、超级实用。

JadePool CRUD举例


    1、调用并执行一个sql文件


  1. Jade j = new Jade(); //开始事务  
  2. boolean b = j.executeSqlFile("d:\\createTable.sql");  
  3. j.commit();//事务提交并关闭连接  

    2、查询数据库的结构信息

 


  1. Jade j = new Jade();  
  2. String s = j.queryDbInfo();  
  3. System.out.println(s);  
  4. j.commit();  

 

    3、查询数据库的一个表的结构信息

 


  1. Jade j = new Jade();  
  2. String s = j.queryTableInfo(tableName);  
  3. System.out.println(s);  
  4. j.commit();  

 

    4、插入一组记录


  1. List<Map> list=...;  
  2. Jade j = new Jade();  
  3. j.insert(tableName, list);  
  4. j.commit();  

    5、更新一组记录


  1. List<Map> list=...;  
  2. Jade j = new Jade();  
  3. j.update(tableName, list);  
  4. j.commit();  


    6、插入或更新一条记录


  1. Map m=...;//一条记录  
  2. Jade j = new Jade();  
  3. Object keyValue=j.saveOne(tableName, m);//或者int num=j.save(tableName, m);  
  4. j.commit();  


    7、插入或更新一组记录


  1. List<Map> list=...;//一组记录  
  2. Jade j = new Jade();  
  3. int num=0;  
  4. for(Map m:list){  
  5.     num=num+j.save(tableName, m);  
  6. }  
  7. j.commit();  


    8、插入或更新一条主表记录、并插入或更新一组子表记录


  1. Map m=...;//一条主表记录  
  2. List<Map> list=...;//一组子表记录  
  3. Jade j = new Jade();  
  4. Object keyValue=j.saveOne(tableName, m);  
  5. int num=0;  
  6. for(Map mm:list){  
  7.     mm.put(keyName, keyValue);  
  8.     num=num+j.save(subTableName, mm);  
  9. }  
  10. j.commit();  


    9、【实例】在Servlet中保存一组由表单提交的记录

    使用的数据库表


  1.       
  2. create table test_tel(                                         /*通信录*/  
  3. id bigint primary key,                                         /*主键*/  
  4. danwei varchar(50),                                            /*单位*/  
  5. dianhua varchar(16),                                           /*电话*/  
  6. zhaopian image                                                 /*照片*/  
  7. )  


    表单范例。在多组记录中,第一个字段不要用check、radio按钮,使用这两个属性值 method="post" enctype="multipart/form-data"

  1.       
  2. <form action="./TelServlet" method="post" enctype="multipart/form-data">  
  3.         <table>  
  4.             <tr>  
  5.                 <th>姓名</th><th>单位</th><th>电话</th><th>照片</th>  
  6.             </tr>  
  7.             <tr>  
  8.                 <td><input type="hidden" name="id" value="1"/><input name="xingming" value="张山月"/></td>  
  9.                 <td><textarea name="danwei">华联超市</textarea></td>  
  10.                 <td><input name="dianhua" value="400-1230-1000"/></td>  
  11.                 <td><input type="file" name="zhaopian"/></td>  
  12.             </tr>  
  13.             <tr>  
  14.                 <td><input type="hidden" name="id" value="2"/><input name="xingming" value="李海江"/></td>  
  15.                 <td><textarea name="danwei">中国电信</textarea></td>  
  16.                 <td><input name="dianhua" value="400-1230-1001"/></td>  
  17.                 <td><input type="file" name="zhaopian"/></td>  
  18.             </tr>  
  19.             <tr>  
  20.                 <td><input type="hidden" name="id" value="3"/><input name="xingming" value="王大鹏"/></td>  
  21.                 <td><textarea name="danwei">中国移动</textarea></td>  
  22.                 <td><input name="dianhua" value="400-1230-1002"/></td>  
  23.                 <td><input type="file" name="zhaopian"/></td>  
  24.             </tr>  
  25.             <tr>  
  26.                 <td colspan="4" align="center"><input type=submit value='提交'/></td>  
  27.             </tr>  
  28.         </table>  
  29.     </form>  


    万能表单解析


  1. ProcessForm form = ProcessForm.instance();//万能表单解析,包括对所有的文本字段、上传文件(图片多媒体等文件)字段的解析  
  2. form.parse(request);  
  3. List<Map>  list = form.getRecordList();//获取多条记录//Map m = form.getRecord();//获取一条记录  
  4. Jade j = new Jade();  
  5. for (Map m : list) {  
  6.     j.save("test_tel", m);  
  7. }  
  8. List<Map>  v=j.query("select * from test_tel");//查询  
  9. for (Map m : v) {  
  10.     System.out.println(m);  
  11. }  
  12. j.commit();  


    保存后输出的查询结果

 


  1. {id=1, danwei=华联超市, dianhua=400-1230-1000, zhaopian=[B@1dbb3e7}  
  2. {id=2, danwei=中国电信, dianhua=400-1230-1001, zhaopian=[B@1003b09}  
  3. {id=3, danwei=中国移动, dianhua=400-1230-1002, zhaopian=[B@2406db}  


    10、查询一条记录

 


  1. Jade j = new Jade();  
  2. Map m=j.queryOne(querySql);//可以是任意复杂的查询语句  
  3. j.commit();  


    11、查询一组记录


  1. Jade j = new Jade();  
  2. List<Map>  list=j.query(querySql);//可以是任意复杂的查询语句  
  3. j.commit();  


    12、大型记录分组索引查询


  1. /* 
  2. * 假设表tableName中含有100万条记录,按每组1000条记录分组,查找第99组记录[索引号98] 
  3. */  
  4.                        
  5. Jade j = new Jade();  
  6. List<Map> v = j.indexByIndexNodes(tableName, new String[]{fieldName1, fieldName2, fieldName3}, 98false降序, false不重新创建索引数组);  
  7. j.commit();  


    13、删除记录

  1. Jade j = new Jade();  
  2. int num=j.delete(deleteSql);//sql删除语句  
  3. j.commit();  

    14、取消插入、更新、删除等操作

  1. Jade j = new Jade();  
  2. int num=j.delete(deleteSql);//sql删除语句  
  3. j.cancel();//事务回滚,并关闭连接  

 

说明:

1、jadepool-1.0-GBK下载的网址:

             http://download.csdn.net/detail/wj800/5109413

             http://www.jadepool.cn/

2、初次使用JadePool工具,可以参阅本人的CSDN博文 “高效JDBC编程工具JadePool快速入门 “

posted @ 2013-03-17 08:46  季相相  阅读(275)  评论(0编辑  收藏  举报