在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. ehlib 用法记录

    点列头排序 1.add  ehlibado.pas  to project. 2.grideh>ColumnDefValues>Title>TitleButton=true; 3.g ...

  2. 04-SSH综合案例:环境搭建之jar包引入

    刚才已经把表关系的分析已经分析完了,现在呢就先不去创建这个表,写到哪儿的时候再去创建这个表. 1.4 SSH环境搭建: 1.4.1 第一步:创建一个web项目. 1.4.2 第二步:导入相应jar包. ...

  3. 裸函数naked解析

    先分享一个案例: #include <stdio.h> __declspec(naked) void Test() { int x; x = ; __asm ret; } int main ...

  4. ps 中添加一张图片

    // 测试打开一个文件var fileref = new File ("/E/work/没有图片提交/2014/2014.5.19/G20/部件渲染测试/png/tianji_1-41001 ...

  5. linux上chrome、vlc等程序root不能运行的解决办法

    which vlc 或者 whereis vlc 输入/geteuid,输入i进入输入模式,将geteuid改成getppid,然后ESC,输入wq,保存退出,这样程序root用户就可以运行了. ch ...

  6. “undefined JNI_GetCreatedJavaVM”和“File format not recognized”错误原因分析

    如果编译时,报如下所示错误:../../third-party/hadoop/lib/libhdfs.a(jni_helper.c.o): In function `getGlobalJNIEnv': ...

  7. 常见gcc编译问题解决方法集

    除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词):用"-Wl,-Bstatic"指定链接静态库,使用 ...

  8. (轉)CSS 单行溢出文本显示省略号...的方法(兼容IE FF)

    轉自:http://www.cnblogs.com/hlz789456123/archive/2009/02/18/1392972.html html代码:<div><p>&l ...

  9. 深水划水队项目---七天冲刺之day5

    站立式会议: 因为今天有成员回家,不能进行线下站立式会议,只能线上进行语音聊天 工作进度:  昨天完成的任务: 游戏功能的基本实现 商讨出如何实现游戏中的难度选择功能与道具功能 商讨出站立式会议能线下 ...

  10. 初尝2D骨骼动画编辑工具SPINE,并into Unity3D

    一.SPINE使用 研究2D骨骼动画,CYou的朋友介绍我SPINE这个工具,开发自Esoteric Software的一款专门制作2D动画的软件,网络上的资料还很少,我这从半吊子美术技术的角度简单说 ...