一、 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(); } }
至此,結束。
