java—在dbutils中处理事务与不确定条件的查询(46)
在dbutils中处理事务
事务是指用户的一次操作。这一次操作有可能是一个表,也有可能是多个表,也有可能是对一个表的多次操作。
只要是:
1:对数据数据库进行多次操作。
2:多个表,还是一个表的多次update,detelete,inset都应该开始一个事务。
如果仅做一次与数据库的操作。即只执行一个sql语句,则可以不用开事务。
如果仅做select 则没有必要开事务。
事务是指用户的一次操作,这一次操作,只能有一个结果,要不然就全部成功,要不然就全部不成功。
如果需要在dbutils中管理事务。则用户必须自己传递并控制connection。
@Test
public void tx1() throws Exception{
QueryRunner run = new QueryRunner(DataSourceUtils.getDatasSource());
Connection con =DataSourceUtils.getConn();
try{
String sql = "insert into users values('U008','AA','AA')";
//设置事务的开始标记
con.setAutoCommit(false);
run.update(con, sql);
String sql2 = "insert into users values('U009,'AA','AA')";
run.update(con,sql2);
//提交
con.commit();
}catch(Exception e){
System.err.println("出错了");
con.rollback();
}finally{
con.close();
}
}
不确定条件的查询
以下是通过串字符串的方式实现查询:
@Test
public void query1() throws Exception{
QueryRunner run = new QueryRunner(DataSourceUtils.getDatasSource());
Contact c = new Contact();
//c.setId("C001");
c.setName("王");
//c.setSex("1");
//c.setTel("123");
//c.setAddr("中国");
//c.setAge(88);
String sql = "select * from contacts where 1=1";
if(c.getId()!=null){
sql+=" and id='"+c.getId()+"'";
}
if(c.getSex()!=null){
sql = sql+" and sex='"+c.getSex()+"'";
}
if(c.getName()!=null){
sql+=" and name like '%"+c.getName()+"%'";
}
if(c.getAddr()!=null){
sql+=" and addr like '%"+c.getAddr()+"%'";
}
if(c.getTel()!=null){
sql+=" and tel like '%"+c.getTel()+"%'";
}
System.err.println(">>>>>>:"+sql);
List<Contact> cs = run.query(sql,new BeanListHandler<Contact>(Contact.class));
for(Contact cc:cs){
System.err.println(cc);
}
}
//不确定条件的查询
@Test
public void query1() throws Exception{
QueryRunner run = new QueryRunner(DataSourceUtils.getDatasSource());
Contact c = new Contact();
//c.setId("C001");
c.setName("王'");
c.setSex("1");
c.setTel("123");
c.setAddr("中国");
c.setAge(55);
String sql = "select * from contacts where 1=1 ";
List<Object> params = new ArrayList<Object>();
if(c.getId()!=null){
sql+=" and id=?";
params.add(c.getId());
}
if(c.getSex()!=null){
sql = sql+" and sex=?";
params.add(c.getSex());
}
if(c.getName()!=null){
sql+=" and name like ?";
params.add("%"+c.getName()+"%");
}
if(c.getAddr()!=null){
sql+=" and addr like ?";
params.add("%"+c.getAddr()+"%");
}
if(c.getTel()!=null){
sql+=" and tel like ?";
params.add("%"+c.getTel()+"%");
}
if(c.getAge()!=null){
sql+=" and age=?";
params.add(c.getAge());
}
System.err.println(">>>>>>:"+sql);
System.err.println(params);
List<Contact> cs = run.query(sql,
new BeanListHandler<Contact>(Contact.class),
params.toArray());
for(Contact cc:cs){
System.err.println(cc);
}
}
匹配后面的所有and.
java—在dbutils中处理事务与不确定条件的查询(46)的更多相关文章
- SQL中以count及sum为条件的查询
在开发时,我们经常会遇到以“累计(count)”或是“累加(sum)”为条件的查询.比如user_num表: id user num 1 a 3 2 a 4 3 b 5 4 b 7 例1:查询出现 ...
- SQL中以count或sum为条件的查询方式
在开发时,我们经常会遇到以“累计(count)”或是“累加(sum)”为条件的查询.比如user_num表: id user num 1 a 3 2 a 4 3 b 5 4 b 7 例1:查询出现 ...
- C#和JAVA中编写事务代码
C# DAL层代码,运行多条增删改,使用事务操作: /// <summary> /// 运行 多条增删改 (非查询语句) /// </summary> /// <par ...
- 第77节:Java中的事务和数据库连接池和DBUtiles
第77节:Java中的事务和数据库连接池和DBUtiles 前言 看哭你,字数:8803,承蒙关照,谢谢朋友点赞! 事务 Transaction事务,什么是事务,事务是包含一组操作,这组操作里面包含许 ...
- [转]Java中的事务
这篇Java事务的说明不错,所以把它转过来收藏了. 原博文地址:http://blog.csdn.net/gyf4817/article/details/5362444 通常的观念认为,事务仅与数据库 ...
- Java中的事务——JDBC事务和JTA事务
Java中的事务——JDBC事务和JTA事务 转载:http://www.hollischuang.com/archives/1658 之前的事务介绍基本都是数据库层面的事务,本文来介绍一下J2EE中 ...
- 在java中,事务是什么?
一.什么是Java事务通常的观念认为,事务仅与数据库相关.事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isolat ...
- Java中的事务——全局事务与本地事务
转载,原文来源 http://www.hollischuang.com Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务.这是从事务的实现角度区 ...
- Java中的事务
Java中的事务 学习了:https://www.cnblogs.com/chengpeng15/p/5802930.html 膜拜一下 org 分为三类:jdbc事务.jta事务.容器事务:
随机推荐
- 利用TortoiseGit从Github上下载代码
1.首先确保安装好了Git和TortoiseGit并在Github上有存放资源 2.将git上博客源文件克隆到本地,在本地创建好要存放资源的文件夹,之后在此文件内右键单击,可以看到下拉菜单中增加了To ...
- Go Methods and Interfaces
[Go Methods and Interfaces] 1.Go does not have classes. However, you can define methods on struct ty ...
- nice & renice
[nice & renice & getpriority & setpriority] 1.nice & renice 参考:http://man.ddvip.com/ ...
- mac下搭建appium
1.安装java 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html ...
- for 续8
---------siwuxie095 一个问题分析: 在 CMD 窗口输入: dir dir /b dir /b /ah dir C:\Windows dir C:\ ...
- jquery中的trigger()和preventDefault()方法
trigger()方法用户模拟用户操作,比较常见的一种情况就是输入框自动获得焦点: <!doctype html> <html> <head> <meta c ...
- springboot中开发热部署(devtools)
1.只需要在pom文件中引入devtools的依赖即可 <dependency> <groupId>org.springframework.boot</groupId&g ...
- Dockerfile RUN, CMD & ENTRYPOINT
Dockerfile RUN, CMD & ENTRYPOINT 在使用Dockerfile创建image时, 有几条指令比较容易混淆, RUN, CMD, ENTRYPOINT. RUN是在 ...
- Restful风格wcf调用2——增删改查
写在前面 上篇文章介绍如何将wcf项目,修改成restful风格的接口,并在上面提供了查询的功能,上篇文章中也感谢园友在评论中的提的建议,自己也思考了下,确实是那个道理.在urltemplate中,定 ...
- CocoaPods安装和使用教程[转]
目录 CocoaPods是什么? 如何下载和安装CocoaPods? 如何使用CocoaPods? 场景1:利用CocoaPods,在项目中导入AFNetworking类库 场景2:如何正确编译运行一 ...