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 ...
随机推荐
- 高仿腾讯QQ即时通讯IM项目
前言:其实这个项目早就开发完成了,在本人的github上,本来没打算写成博客的形式,因为一个项目要写出来要花很久,但是最近看到很多 人在我的github上download后随意发布到网上,本来上传到g ...
- 【移动开发】plurals
不同的语言对数量的语法规定有不同的规则.在英语里面,例如,1是特例.我们会直接写1book,而针对一个以上的我们会在book后加复数形式.这种区别对单数和复数来说是很普遍的,但是其他的语言做了更好的区 ...
- TortoiseSVN文件夹图标不显示
伴随着十二月的脚步,小编带领的市委组织部项目有条不紊的进行着,在最近的项目中遇到一个问题TortoiseSVN文件夹的图标不显示,为什么小编已经安装好TortoiseSVN了,发现文件夹的图标还是系统 ...
- JSP自定义标签必知必会
自定义标签技术自sun公司发布以来,便一向很受欢迎!下面我就来谈一谈如何实现自定义标签,以及如何使用自定义标签. 如何实现自定义标签 首先我们应该知道原理,不管是标签还是JSP,本身实际上都会被JSP ...
- 数据拟合:多项式拟合polynomial curve fitting
http://blog.csdn.net/pipisorry/article/details/49804441 常见的曲线拟合方法 1.使偏差绝对值之和最小 2.使偏差绝对值最大的最小 3 ...
- Java数组与函数的结合
import java.util.Scanner; public class HelloWorld { public static void main(String[] args){ // Scann ...
- 从JDK源码角度看线程池原理
"池"技术对我们来说是非常熟悉的一个概念,它的引入是为了在某些场景下提高系统某些关键节点性能,最典型的例子就是数据库连接池,JDBC是一种服务供应接口(SPI),具体的数据库连接实 ...
- Unable to handle 'index' format version '2', please update rosdistro的解决办法
之前安装的ROS是Fuerte版本的,好久没有更新,不知不觉又出来了好几个新的版本,今天删除了Fuerte,计划安装Hydro版本的尝尝新,按照官网的安装流程,很快就可以把新版本安装上去了,但是在&q ...
- FFmpeg在ubuntu下安装及使用
FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视频的完整解决方案.它包含了非常先进的音频/视频编解码库l ...
- 【一天一道LeetCode】#76. Minimum Window Substring
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...