在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)的更多相关文章

  1. SQL中以count及sum为条件的查询

    在开发时,我们经常会遇到以“累计(count)”或是“累加(sum)”为条件的查询.比如user_num表: id user num 1 a 3 2 a 4 3 b 5 4 b 7   例1:查询出现 ...

  2. SQL中以count或sum为条件的查询方式

    在开发时,我们经常会遇到以“累计(count)”或是“累加(sum)”为条件的查询.比如user_num表: id user num 1 a 3 2 a 4 3 b 5 4 b 7   例1:查询出现 ...

  3. C#和JAVA中编写事务代码

    C#  DAL层代码,运行多条增删改,使用事务操作: /// <summary> /// 运行 多条增删改 (非查询语句) /// </summary> /// <par ...

  4. 第77节:Java中的事务和数据库连接池和DBUtiles

    第77节:Java中的事务和数据库连接池和DBUtiles 前言 看哭你,字数:8803,承蒙关照,谢谢朋友点赞! 事务 Transaction事务,什么是事务,事务是包含一组操作,这组操作里面包含许 ...

  5. [转]Java中的事务

    这篇Java事务的说明不错,所以把它转过来收藏了. 原博文地址:http://blog.csdn.net/gyf4817/article/details/5362444 通常的观念认为,事务仅与数据库 ...

  6. Java中的事务——JDBC事务和JTA事务

    Java中的事务——JDBC事务和JTA事务 转载:http://www.hollischuang.com/archives/1658 之前的事务介绍基本都是数据库层面的事务,本文来介绍一下J2EE中 ...

  7. 在java中,事务是什么?

    一.什么是Java事务通常的观念认为,事务仅与数据库相关.事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isolat ...

  8. Java中的事务——全局事务与本地事务

    转载,原文来源 http://www.hollischuang.com Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务.这是从事务的实现角度区 ...

  9. Java中的事务

    Java中的事务 学习了:https://www.cnblogs.com/chengpeng15/p/5802930.html 膜拜一下 org 分为三类:jdbc事务.jta事务.容器事务:

随机推荐

  1. 「小程序JAVA实战」小程序的视频点赞功能开发(62)

    转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudeshipindianzangongnengkaifa61/ 视频点 ...

  2. 提示框一段时间以后消失setTimeout

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. JAVA 获取文件的MD5值大小以及常见的工具类

    /** * 获取文件的MD5值大小 * * @param file * 文件对象 * @return */ public static String getMD5(File file) { FileI ...

  4. Struts 2 常用技术

    目录  Struts 2 常用技术  1. 常用类和接口  1.1 getter 和 setter 方法  1.2 Action 接口  1.3 ActionSupport 类  1.4 通过 Act ...

  5. 转化RGB颜色为CMYK颜色

    procedure RGBTOCMYK(R : byte; G : byte; B : byte; var C : byte; var M : byte; var Y : byte; var K : ...

  6. helm 安装 spinnaker

    $ curl -Lo values.yaml https://raw.githubusercontent.com/kubernetes/charts/master/stable/spinnaker/v ...

  7. js练习 closure

    window.onload = function() {            for (var i = 1; i < 4; i++) {                var id = doc ...

  8. sqlserver job 执行时间

    select instance_id,jh.run_date,jh.job_id,jh.step_name, case jh.run_status then 'failed' then 'Succee ...

  9. 22-python爬虫解决gbk乱码问题

    转载自: python爬虫解决gbk乱码问题   今天尝试了下爬虫,爬取一本小说,忘语的凡人修仙仙界篇,当然这样不好,大家要支持正版. 爬取过程中是老套路,先获取网页源代码 # -*- coding: ...

  10. YUI前端优化之javascript,css篇

    三.JavaScript和CSS篇 JavaScript和CSS也是我们页面中经常用到的内容,对它们的优化也提高网站性能的重要方面:CSS:把样式表置于顶部避免使用CSS表达式(Expression) ...