mybatis中autoCommit自動提交事務


今天學習了下mybatis,

對其中的autoCommit自動提交事務比較好奇,

研究了下,把配置和代碼都放上

mapper.xml如下:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!-- namespace隔離sql -->
 6 <mapper namespace="User">
 7     <!-- id:statement的標識 -->
 8     <!-- 
 9       #{}表示占位符(轉為?),可以防止SQL注入;如果輸入參數類型是簡單類型,輸入參數名稱可以是value或者其它任意名稱 
10      -->
11     <select id="getUserById" parameterType="int" resultType="org.pine.mybatis.po.User">
12         select * from user t where t.id = #{id}
13     </select>
14 
15     <!-- resultType:單條記錄的類型 -->
16     <select id="listUserByUserame1" parameterType="java.lang.String" resultType="org.pine.mybatis.po.User">
17         select * from user t where t.username like #{username}
18     </select>
19 
20     <!-- 
21       ${}表示拼接SQL(拼接參數),不能防止SQL注入;如果輸入參數類型是簡單類型,輸入參數名稱只能是value 
22      -->
23     <select id="listUserByUsername2" parameterType="java.lang.String" resultType="org.pine.mybatis.po.User">
24         select * from user t where t.username like '%${value}%'   
25     </select>
26     
27     <!-- 
28              輸入參數類型為User類型,是一個pojo
29      #{}表示占位符,輸入參數名稱為username,是pojo里面的一個屬性
30      -->
31     <insert id="insertUser0" parameterType="org.pine.mybatis.po.User">
32         INSERT INTO USER(username,birthday,sex,address) VALUES(#{username},#{birthday},#{sex},#{address})
33     </insert>
34 
35     <insert id="insertUser1" parameterType="org.pine.mybatis.po.User">
36         INSERT INTO USER(id,username,birthday,sex,address) VALUES(default,#{username},#{birthday},#{sex},#{address})    
37     </insert>
38     
39     <insert id="insertUser2" parameterType="org.pine.mybatis.po.User">
40         INSERT INTO USER(id,username,birthday,sex,address) VALUES(null,#{username},#{birthday},#{sex},#{address});
41     </insert>
42 </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();
            
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM