mybatis中autoCommit自动提交事务
今天学习了下mybatis,
对其中的autoCommit自动提交事务比较好奇,
研究了下,把配置和代码都放上
mapper.xml如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace隔离sql -->
<mapper namespace="User">
<!-- id:statement的标识 -->
<!--
#{}表示占位符(转为?),可以防止SQL注入;如果输入参数类型是简单类型,输入参数名称可以是value或者其它任意名称
-->
<select id="getUserById" parameterType="int" resultType="org.pine.mybatis.po.User">
select * from user t where t.id = #{id}
</select> <!-- resultType:单条记录的类型 -->
<select id="listUserByUserame1" parameterType="java.lang.String" resultType="org.pine.mybatis.po.User">
select * from user t where t.username like #{username}
</select> <!--
${}表示拼接SQL(拼接参数),不能防止SQL注入;如果输入参数类型是简单类型,输入参数名称只能是value
-->
<select id="listUserByUsername2" parameterType="java.lang.String" resultType="org.pine.mybatis.po.User">
select * from user t where t.username like '%${value}%'
</select> <!--
输入参数类型为User类型,是一个pojo
#{}表示占位符,输入参数名称为username,是pojo里面的一个属性
-->
<insert id="insertUser0" parameterType="org.pine.mybatis.po.User">
INSERT INTO USER(username,birthday,sex,address) VALUES(#{username},#{birthday},#{sex},#{address})
</insert> <insert id="insertUser1" parameterType="org.pine.mybatis.po.User">
INSERT INTO USER(id,username,birthday,sex,address) VALUES(default,#{username},#{birthday},#{sex},#{address})
</insert> <insert id="insertUser2" parameterType="org.pine.mybatis.po.User">
INSERT INTO USER(id,username,birthday,sex,address) VALUES(null,#{username},#{birthday},#{sex},#{address});
</insert>
</mapper>
MybatisFirst3.java如下:
package org.pine.mybatis.first; import java.io.InputStream;
import java.sql.Date;
import java.text.SimpleDateFormat; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.pine.mybatis.po.User; public class MybatisFirst3 {
@Test
public void testInsert0() throws Exception{
String fileName ="SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(fileName);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();//通过这种方式打开的SqlSession,autoCommit默认为false,需要手动提交事务 User user = new User();
user.setUsername("孙坤鹏");
user.setBirthday(new Date(new SimpleDateFormat("yyyy-MM-dd").parse("1991-09-13").getTime()));
user.setSex("男");
user.setAddress("河南新乡"); sqlSession.insert("User.insertUser2", user);
sqlSession.commit(); sqlSession.close();
inputStream.close();
} @Test
public void testInsert1() throws Exception{
String fileName ="SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(fileName);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession(true);//通过这种方式打开的SqlSession,autoCommit为true,会自动提交事务 User user = new User();
user.setUsername("王起鹏");
user.setBirthday(new Date(new SimpleDateFormat("yyyy-MM-dd").parse("1992-07-20").getTime()));
user.setSex("男");
user.setAddress("河南驻马店"); sqlSession.insert("User.insertUser2", user); sqlSession.close();
inputStream.close();
} @Test
public void testInsert2() throws Exception{ String fileName ="SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(fileName);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession(false);//通过这种方式打开的SqlSession,autoCommit为false,需要手动提交事务 User user = new User();
user.setUsername("杨豆豆");
user.setBirthday(new Date(new SimpleDateFormat("yyyy-MM-dd").parse("1989-06-19").getTime()));
user.setSex("男");
user.setAddress("河南驻马店"); sqlSession.insert("User.insertUser2", user);
sqlSession.commit(); sqlSession.close();
inputStream.close(); }
}
mybatis中autoCommit自动提交事务的更多相关文章
- Mybatis工具类(自动提交事务)
public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { //获取工 ...
- mybatis中mapUnderscoreToCamelCase自动驼峰命名转换
ssm项目中在mybatis配置文件中添加以下配置,可以将数据库中user_name转化成userName与实体类属性对应,如果数据库使用如user_name的命名方式,实体类采用驼峰命名.配置后无需 ...
- mybatis中返回自动生成的id
当有时我们插入一条数据时,由于id很可能是自动生成的,如果我们想要返回这条刚插入的id怎么办呢. 在mysql数据中我们可以在insert下添加一个selectKey用以指定返回的类型和值: ...
- mybatis设置自动提交事务
我们想要mybatis帮助我们自动提交事务其实很简单,只需要在SqlSessionFactory对象的openSession方法中设置参数为true就可以了,mybatis工具类如下: public ...
- (4.19)sql server中的事务模式(隐式事务,显式事务,自动提交事务)
(4.19)sql server中的事务模式(隐式事务,显式事务,自动提交事务) 1.概念:隐式事务,显式事务,自动提交事务 2.操作:如何设置事务模式 3.存储过程中的事务 XACT_ABORT 1 ...
- SpringBoot+MyBatis中自动根据@Table注解和@Column注解生成增删改查逻辑
习惯使用jpa操作对象的方式,现在用mybatis有点不习惯. 其实是懒得写SQL,增删改查那么简单的事情你帮我做了呗,mybatis:NO. 没办法,自己搞喽! 这里主要是实现了通过代码自动生成my ...
- 二、myeclipse中配置mybatis中xml的自动提示
以mybatis中mapper.xml为例 方法一: 步骤一:在mybatis-3.3.0.jar包中寻找mybatis-3-mapper.dtd文件. 可以用360压缩打开mybatis-3.3.0 ...
- Mysql中autocommit的用法
定义 Mysql文档原文:SET autocommit disables or enables the default autocommit mode for the current session. ...
- 【mybatis深度历险系列】深入浅出mybatis中原始dao的开发和mapper代理开发
使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法.mybatis在进行dao开发的时候,涉及到三姐妹,分别是SqlSessionFactoryBuilder ...
随机推荐
- sql中InnoDB和MyISAM的区别
InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型 1,MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持等高级处理,往往被认为只适合小项目:而 ...
- jQuery Ajax 使用 ($.ajax、$.post、$.get)
项目中只要涉及到前后台的交互,数据状态之间的交互,ajax是必不可少的.一般项目中jquery方式的ajax用的还是比较多的.封装的比较好,用起来也顺手,兼容浏览器之间的差异. 操作的方式有三种: 1 ...
- 饮一盏Bug留香,唱一曲项目飞扬
沿途的风景 牵挂的项目 两情迢迢 学生档案管理项目在2月的末尾从稍带寒意的季节里完成了第一次迭代,验收的结果不尽善尽美,演示的功能也惨不忍睹,各种"关爱"的点评充斥耳旁 ...
- java设计模式---三种工厂模式
工厂模式提供创建对象的接口. 工厂模式分为三类:简单工厂模式(Simple Factory), 工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory).GOF在 ...
- 如何在Cocos2D 1.0 中掩饰一个精灵(二)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 让我们开始吧 打开Xcode,从New Project中选择co ...
- Uva - 1594 - Ducci Sequence
水题,算出每次的结果,比较是否全0,循环1000次还不是全0则LOOP AC代码: #include <iostream> #include <cstdio> #include ...
- Swing中经常会遇到的若干问题——JTable(持续更新)
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/40955213 (1)让组件在屏幕中央显示 public s ...
- Android Studio查看应用数字签名-android学习之旅(76)
Android Studio和Eclispe还是有比较大的区别,在这地方,eclipse可以直接在设置里面,而AS就需要通过Terminal来查看 步骤 1.首先定位到.android 一般都是在C盘 ...
- XBMC源代码分析 4:视频播放器(dvdplayer)-解码器(以ffmpeg为例)
XBMC分析系列文章: XBMC源代码分析 1:整体结构以及编译方法 XBMC源代码分析 2:Addons(皮肤Skin) XBMC源代码分析 3:核心部分(core)-综述 本文我们分析XBMC中视 ...
- CSDN2013年度博客之星评选
亲爱的3Ser,大家好!很荣幸我能够成为CSDN 2013年度博客之星评选的候选人,希望大家移步到此处,为我投上一票.在过去的一年里,感谢大家对我的支持,2014年我会继续努力,为大家分享更多更好的3 ...