JadePool 据说效率相当之高
在HashMap关系数据映射技术产品JadePool中,ProcessVO是cn.jadepool.sql.Jdml实现类,实现事务型数据库DML操作。统一抛出SQLException异常。创建该对象后,由用户决定开启事务、处理异常。Jade是简化的ProcessVO应用类,对异常进行了捕获。创建该对象后,便开启了数据库事务。 在大多数情况下推荐使用Jade,它超级简便、超级实用。
JadePool CRUD举例
1、调用并执行一个sql文件
- Jade j = new Jade(); //开始事务
- boolean b = j.executeSqlFile("d:\\createTable.sql");
- j.commit();//事务提交并关闭连接
2、查询数据库的结构信息
- Jade j = new Jade();
- String s = j.queryDbInfo();
- System.out.println(s);
- j.commit();
3、查询数据库的一个表的结构信息
- Jade j = new Jade();
- String s = j.queryTableInfo(tableName);
- System.out.println(s);
- j.commit();
4、插入一组记录
- List<Map> list=...;
- Jade j = new Jade();
- j.insert(tableName, list);
- j.commit();
5、更新一组记录
- List<Map> list=...;
- Jade j = new Jade();
- j.update(tableName, list);
- j.commit();
6、插入或更新一条记录
- Map m=...;//一条记录
- Jade j = new Jade();
- Object keyValue=j.saveOne(tableName, m);//或者int num=j.save(tableName, m);
- j.commit();
7、插入或更新一组记录
- List<Map> list=...;//一组记录
- Jade j = new Jade();
- int num=0;
- for(Map m:list){
- num=num+j.save(tableName, m);
- }
- j.commit();
8、插入或更新一条主表记录、并插入或更新一组子表记录
- Map m=...;//一条主表记录
- List<Map> list=...;//一组子表记录
- Jade j = new Jade();
- Object keyValue=j.saveOne(tableName, m);
- int num=0;
- for(Map mm:list){
- mm.put(keyName, keyValue);
- num=num+j.save(subTableName, mm);
- }
- j.commit();
9、【实例】在Servlet中保存一组由表单提交的记录
使用的数据库表
- create table test_tel( /*通信录*/
- id bigint primary key, /*主键*/
- danwei varchar(50), /*单位*/
- dianhua varchar(16), /*电话*/
- zhaopian image /*照片*/
- )
表单范例。在多组记录中,第一个字段不要用check、radio按钮,使用这两个属性值 method="post" enctype="multipart/form-data"
- <form action="./TelServlet" method="post" enctype="multipart/form-data">
- <table>
- <tr>
- <th>姓名</th><th>单位</th><th>电话</th><th>照片</th>
- </tr>
- <tr>
- <td><input type="hidden" name="id" value="1"/><input name="xingming" value="张山月"/></td>
- <td><textarea name="danwei">华联超市</textarea></td>
- <td><input name="dianhua" value="400-1230-1000"/></td>
- <td><input type="file" name="zhaopian"/></td>
- </tr>
- <tr>
- <td><input type="hidden" name="id" value="2"/><input name="xingming" value="李海江"/></td>
- <td><textarea name="danwei">中国电信</textarea></td>
- <td><input name="dianhua" value="400-1230-1001"/></td>
- <td><input type="file" name="zhaopian"/></td>
- </tr>
- <tr>
- <td><input type="hidden" name="id" value="3"/><input name="xingming" value="王大鹏"/></td>
- <td><textarea name="danwei">中国移动</textarea></td>
- <td><input name="dianhua" value="400-1230-1002"/></td>
- <td><input type="file" name="zhaopian"/></td>
- </tr>
- <tr>
- <td colspan="4" align="center"><input type=submit value='提交'/></td>
- </tr>
- </table>
- </form>
万能表单解析
- ProcessForm form = ProcessForm.instance();//万能表单解析,包括对所有的文本字段、上传文件(图片多媒体等文件)字段的解析
- form.parse(request);
- List<Map> list = form.getRecordList();//获取多条记录//Map m = form.getRecord();//获取一条记录
- Jade j = new Jade();
- for (Map m : list) {
- j.save("test_tel", m);
- }
- List<Map> v=j.query("select * from test_tel");//查询
- for (Map m : v) {
- System.out.println(m);
- }
- j.commit();
保存后输出的查询结果
- {id=1, danwei=华联超市, dianhua=400-1230-1000, zhaopian=[B@1dbb3e7}
- {id=2, danwei=中国电信, dianhua=400-1230-1001, zhaopian=[B@1003b09}
- {id=3, danwei=中国移动, dianhua=400-1230-1002, zhaopian=[B@2406db}
10、查询一条记录
- Jade j = new Jade();
- Map m=j.queryOne(querySql);//可以是任意复杂的查询语句
- j.commit();
11、查询一组记录
- Jade j = new Jade();
- List<Map> list=j.query(querySql);//可以是任意复杂的查询语句
- j.commit();
12、大型记录分组索引查询
- /*
- * 假设表tableName中含有100万条记录,按每组1000条记录分组,查找第99组记录[索引号98]
- */
- Jade j = new Jade();
- List<Map> v = j.indexByIndexNodes(tableName, new String[]{fieldName1, fieldName2, fieldName3}, 98, false降序, false不重新创建索引数组);
- j.commit();
13、删除记录
- Jade j = new Jade();
- int num=j.delete(deleteSql);//sql删除语句
- j.commit();
14、取消插入、更新、删除等操作
- Jade j = new Jade();
- int num=j.delete(deleteSql);//sql删除语句
- j.cancel();//事务回滚,并关闭连接
说明:
1、jadepool-1.0-GBK下载的网址:
http://download.csdn.net/detail/wj800/5109413
http://www.jadepool.cn/
2、初次使用JadePool工具,可以参阅本人的CSDN博文 “高效JDBC编程工具JadePool快速入门 “