mybatis入門程式:向資料庫中新增使用者&&自增主鍵和非自增主鍵的返回

悲風天涯發表於2020-10-03

1、新增使用者

(1)對映檔案中新增SQL語句

<?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進行分類化管理,理解為SQL的隔離-->
<mapper namespace="test">
 <!--新增使用者-->
    <insert id="insertUser" parameterType="edu.tjut.pojo.User">
        INSERT INTO user(username,birthday,sex,address) VALUE(#{username},#{birthday},#{sex},#{address})
    </insert>
  </mapper>

其中:parameterType:指定輸入引數型別是pojo類
​ #{}中指定pojo的屬性名,接收到pojo物件的屬性值,mybatis通過OGNL獲取物件的屬性值

(2)java程式

 // 新增使用者
    @Test
    public void insertUser() throws IOException {

        //mybatis配置檔案
        String resource = "SqlMapConfig.xml";
        //得到配置檔案流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //建立會話工廠,傳入mybatis的配置檔案資訊
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通過工廠得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 建立需要新增的物件
        User user = new User();
        user.setUsername("李大明");
        user.setBirthday(new Date(1996-1900,8-1,24+1));
        user.setSex("女");
        user.setAddress("北京");
        //通過SqlSession運算元據庫
        sqlSession.insert("test.insertUser",user);
        //提交事務
        sqlSession.commit();
        //獲取使用者資訊的主鍵
        //System.out.println("這個是主鍵:"+user.getId());
        //釋放資源
        sqlSession.close();
    }

2、自增主鍵的返回

mysql自增主鍵,執行insert提交之前自動生成一個自增主鍵(這裡是指使用者的id),通過mysql函式獲取剛插入記錄的自增主鍵LAST_INSERT_ID(),在insert之後呼叫

<insert id="insertUser" parameterType="edu.tjut.pojo.User"><!-- 將剛插入的主鍵返回,返回到user物件中
​			SELECT LAST_ID():得到剛insert進去記錄的主鍵值,只適用於自增主鍵
​			keyProperty:將查詢到的主鍵值設定到parameterType指定的物件的那個屬性
​			order:SELECT LAST_INSERT_ID()的執行順序,相當於insert語句來說它的執行順序
​			resultType:指定SELECT LAST_INSERT_ID()的結果型別
​	 	--><selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer" >
​			SELECT LAST_INSERT_ID()
​		</selectKey> 
​	 	insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
​	 </insert>

3、非自增主鍵的返回:

​ 使用mysql的uuid()函式生成主鍵,需要修改表中id欄位型別為string,長度設定成35位。
​ 執行思路:
​ 先通過uuid()查詢到主鍵,將主鍵輸入到sql語句中
​ 執行uuid()語句順序相對於insert語句之前執行

(1)對映檔案中新增SQL語句:

	<!-- 使用mysql的uuid()生成主鍵
​		執行過程:
​			首先通過uuid()得到主鍵,將主鍵設定成user物件的id屬性中
​			其次在insert執行時,從user物件中取出id屬性值
​		 --><!--新增使用者-->
<insert id="insertUser" parameterType="edu.tjut.pojo.User"><selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String" >
​					SELECT uuid()
​				</selectKey>
​				insert into user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address}
​		</insert>

4、java程式

在這裡插入圖片描述

相關文章