mybatis插入數據、批量插入數據


一、 mybatis插入一條數據

1. UserMapper.java接口中插入函數如下:

/*
     * 新增用戶-----使用useGeneratedKeys方式
     * 測試主鍵自增的值 這里 主鍵自增的值不作為參數傳遞  直接由數據庫那邊賦值
     * */
    int insert4(SysUser sysUser);

2. UserMapper.xml中insert4函數如下:

<insert id="insert4" useGeneratedKeys="true" keyProperty="id">
        insert into sys_user (
            user_name,user_password,
            <if test="userEmail != null and  userEmail !=''">
                user_email,
            </if>
            user_info,head_img,create_time)
            values (
            #{userName}, #{userPassword},
        <if test="userEmail != null and  userEmail !=''">
            #{userMail},
        </if>
        #{userInfo},#{headImg, jdbcType = BLOB},
        #{createTime, jdbcType= TIMESTAMP}
        );
    </insert>

3. 測試函數如下:

@Test
    public void testInsert4(){
        SqlSession sqlSession = getSqlSession();
        try{
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            //創建一個user對象
            SysUser user = new SysUser();
            user.setUserName("test1");
            user.setUserPassword("123456");
            user.setUserEmail("test@mybatis.tk");
            user.setUserInfo("test info");
            user.setHeadImg(new byte[]{1,2,3});
            user.setCreateTime(new Date());
            int result = userMapper.insert3(user);
            Assert.assertEquals(1,result);
            Assert.assertNotNull(user.getId());
        }finally {
            sqlSession.commit();
            sqlSession.close();
        }
    }

4. 運行結果如下:

 

 二、 mybatis批量插入數據

1. 接口如下:

/*
    * 批量插入用戶信息
    * */
    int insertList(List<SysUser> userList);

2. xml文件中:

<insert id="insertList">
        insert into sys_user(user_name,user_password,
        user_email,user_info,head_img,create_time)
        values
        <foreach collection="list" item="user" separator=",">
            #{user.userName},#{user.userPassword},
            #{user.userEmail},#{user.userInfo},
            #{user.headImg ,jdbcType = BLOB},
            #{user.createTime, jdbcType = TIMESTAMP}
        </foreach>

    </insert>

注:foreach標簽

collection:值為要迭代循環的屬性名。

item:變量名,值為從法代對象中取出的每一個值。

index:索引的屬性名,在集合數組情況下值為當前索引值 當選代循環的對象是 Map類型時,這個值為 Map key (鍵值)。

3. 測試函數如下:

@Test
    public void testInsertList(){
        SqlSession sqlSession = getSqlSession();
        try {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<SysUser> userList = new ArrayList<SysUser>();
            for(int i=0 ; i<2 ; i++){
                SysUser sysUser = new SysUser();
                sysUser.setUserName("test_" + i);
                sysUser.setUserPassword("123456");
                sysUser.setUserEmail("wct@qq.com");
            }
            int result = userMapper.insertList(userList);
            Assert.assertEquals(2,result);

        }finally {
            sqlSession.close();
        }

    }

至此,結束。


免責聲明!

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



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