MyBatis —— 第二十五章 MyBatis 的增删改查操作
1. MyBatis 的插入数据操作
1.1. 编写 UserMapper
映射文件
com/yourname/mapping/UserMapping.xml
<mapper namespace="userMapper">
<!-- Insert operation -->
<insert id="save" parameterType="com.gregperlinli.domain.User">
insert into user values(#{id}, #{username}, #{password})
</insert>
</mapper>
1.2. 编写测试类
com.yourname.test.MyBatisTest
/**
* @author gregPerlinLi
* @since 2021-09-29
*/
public class MyBatisTest {
/**
* Insert operation
*
* @throws IOException e
*/
@Test
public void test2() throws IOException {
// Simulate User object
User user = new User();
user.setUsername("Tom");
user.setPassword("abc");
// Get core profile
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
// Get session factory object
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
// Get session object
SqlSession sqlSession = sqlSessionFactory.openSession();
// Execute operation parameter: namespace + . + id
sqlSession.insert("userMapper.save", user);
// Mybatis execute an update operation commit transaction
sqlSession.commit();
// Release resources
sqlSession.close();
}
}
1.3.插入操作注意的问题
- 插入语句使用
insert
标签 - 在映射文件中使用
parameterType
属性确定要插入的数据类型 - SQL 语句中使用
#{entityAttributeName}
方式引用实体中的属性值 - 插入操作使用的 API 是
sqlSession.insert("namespace.id", entityObject);
- 插入操作涉及数据库的变化,所以要使用
sqlSession
对象中的提交事务方法,即sqlSession.commit()
2. MyBatis 的修改数据操作
2.1. 编写 UserMapper
映射文件
<mapper namespace="userMapper">
<!-- Update operation -->
<update id="update" parameterType="com.gregperlinli.domain.User">
update user set username = #{username}, password = #{password} where id = #{id}
</update>
</mapper>
2.2. 编写测试类
com.yourname.test.MyBatisTest
/**
* @author gregPerlinLi
* @since 2021-09-29
*/
public class MyBatisTest {
/**
* Update operation
*
* @throws IOException e
*/
@Test
public void test3() throws IOException {
// Simulate User object
User user = new User();
user.setId(6);
user.setUsername("Jerry");
user.setPassword("123");
// Get core profile
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
// Get session factory object
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
// Get session object
SqlSession sqlSession = sqlSessionFactory.openSession();
// Execute operation parameter: namespace + . + id
sqlSession.update("userMapper.update", user);
// Mybatis execute an update operation commit transaction
sqlSession.commit();
// Release resources
sqlSession.close();
}
}
2.3. 修改操作注意的问题
- 修改语句使用
update
标签 - 修改操作使用的 API 是
sqlSession.update("namespace.id", entityObject);
3. MyBatis 的删除数据操作
3.1. 编写 UserMapper
映射文件
<mapper namespace="userMapper">
<!-- Delete operation -->
<delete id="delete" parameterType="java.lang.Integer">
delete from user where id = #{id}
</delete>
</mapper>
3.2. 编写测试类
com.yourname.test.MyBatisTest
/**
* @author gregPerlinLi
* @since 2021-09-29
*/
public class MyBatisTest {
/**
* Delete operation
*
* @throws IOException e
*/
@Test
public void test4() throws IOException {
// Get core profile
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
// Get session factory object
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
// Get session object
SqlSession sqlSession = sqlSessionFactory.openSession();
// Execute operation parameter: namespace + . + id
sqlSession.delete("userMapper.delete", 6);
// Mybatis execute an update operation commit transaction
sqlSession.commit();
// Release resources
sqlSession.close();
}
}
3.3. 删除操作注意的问题
- 删除语句使用
delete
标签 - SQL 语句中使用
#{arbitraryString}
方式引用传递的单个参数 - 删除操作使用的 API 是
sqlSession.delete("namespace.id", Object);
4. 知识要点
增删改查映射配置与 API
<!-- Query operation -->
<select id="findAll" resultType="com.gregperlinli.domain.User">
select * from user
</select>
<!-- Insert operation -->
<insert id="save" parameterType="com.gregperlinli.domain.User">
insert into user values(#{id}, #{username}, #{password})
</insert>
<!-- Update operation -->
<update id="update" parameterType="com.gregperlinli.domain.User">
update user set username = #{username}, password = #{password} where id = #{id}
</update>
<!-- Delete operation -->
<delete id="delete" parameterType="java.lang.Integer">
delete from user where id = #{id}
</delete>