MyBatis 第二十五章 MyBatis 的增删改查操作


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(#&#123;id&#125;, #&#123;username&#125;, #&#123;password&#125;)
        </insert>
</mapper>

1.2. 编写测试类

com.yourname.test.MyBatisTest

/**
 * @author gregPerlinLi
 * @since 2021-09-29
 */
public class MyBatisTest &#123;
    /**
     * Insert operation
     * 
     * @throws IOException e
     */
    @Test
    public void test2() throws IOException &#123;
        // 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();
    &#125;
&#125;

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 = #&#123;username&#125;, password = #&#123;password&#125; where id = #&#123;id&#125;
    </update>
</mapper>

2.2. 编写测试类

com.yourname.test.MyBatisTest

/**
 * @author gregPerlinLi
 * @since 2021-09-29
 */
public class MyBatisTest &#123;
    /**
     * Update operation
     *
     * @throws IOException e
     */
    @Test
    public void test3() throws IOException &#123;
        // 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();
    &#125;
&#125;

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 = #&#123;id&#125;
    </delete>
</mapper>

3.2. 编写测试类

com.yourname.test.MyBatisTest

/**
 * @author gregPerlinLi
 * @since 2021-09-29
 */
public class MyBatisTest &#123;
    /**
     * Delete operation
     *
     * @throws IOException e
     */
    @Test
    public void test4() throws IOException &#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.delete("userMapper.delete", 6);
        // Mybatis execute an update operation  commit transaction
        sqlSession.commit();
        // Release resources
        sqlSession.close();
    &#125;
&#125;

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(#&#123;id&#125;, #&#123;username&#125;, #&#123;password&#125;)
</insert>
<!-- Update operation -->
<update id="update" parameterType="com.gregperlinli.domain.User">
    update user set username = #&#123;username&#125;, password = #&#123;password&#125; where id = #&#123;id&#125;
</update>
<!-- Delete operation -->
<delete id="delete" parameterType="java.lang.Integer">
    delete from user where id = #&#123;id&#125;
</delete>


文章作者: gregPerlinLi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 gregPerlinLi !
  目录