美文网首页
MyBatis学习笔记-02映射配置文件

MyBatis学习笔记-02映射配置文件

作者: 回笼觉觉猪 | 来源:发表于2021-01-13 00:21 被阅读0次

    续上一篇MyBatis学习笔记-01MyBatis入门,我们继续讲讲通过MyBatis进行增删改操作。
    本文涉及内容主要来自与本人学习《拉勾教育-大数据高薪训练营》课程的记录和总结。

    1.3 映射配置文件概述

    找到我们之前的映射配置文件UserMapper.xml

    UserMapper文件解释

    1.3.1 新增用户

    1. 编辑UserMapper.xml,增加insert标签的内容
    <!--新增用户-->
        <!--#{} : mybatis中的占位符,等同于JDBC的?-->
        <insert id="saveUser" parameterType="com.lagou.domain.User">
            insert into user(username, birthday, sex, address) values (#{username}, #{birthday}, #{sex}, #{address})
        </insert>
    

    #{} : mybatis中的占位符,等同于JDBC的?
    在实际配置时候,为了让mybatis知道每个{}号中对应的是什么值,还需要填入parameterType对应的类变量汇总的类成员名称(实际上这个地方应该是对应类变量中没一个get方法的方法名去掉get后首字母小写的字符串。)

    1. 添加测试代码测试新增操作
        @Test
        public void testUserSave() throws IOException {
            // 1. 加载核心配置文件
            InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
            // 2. 获取sqlSessionFactory工厂对象
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            // 3. 获取sqlSession会话对象
            SqlSession sqlSession = sessionFactory.openSession();
    
            // 4. 创建需要新增的类对象,以及对类变量的赋值
            User user = new User();
            user.setUsername("jack");
            user.setBirthday(new Date());
            user.setSex("男");
            user.setAddress("上海市浦东新区");
            // 5. 执行sql
            sqlSession.insert("userMapper.saveUser", user);
    
            // 6.DML语句,手动提交事务
            sqlSession.commit();
            // 7.关闭释放资源
            sqlSession.close();
        }
    
    1. 注意事项
    • 插入语句使用insert标签
    • 映射文件中使用parameterType属性指定要插入的数据类型
    • Sql语句中使用#{实体属性名}方式引用是体重的属性值
    • 插入操作使用的API是sqlSession.insert("namespace.id",实体对象)
    • 插入操作设计数据库数据的变化,所以需要使用sqlSession对象显式的提交事务,sqlSession.commit()

    我在实际测试的时候遇到个问题,就是插入数据的中文乱码,这里可以设置数据库链接的字符集(&在xml文件是需要转义的,所以需要使用&进行转义)

    正确的url:jdbc:mysql://IP:port/mybatis_db?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8

    1.3.2 更新用户

    1. 编辑UserMapper.xml,增加update标签的内容
    <!--更新用户-->
        <update id="updateUser" parameterType="com.lagou.domain.User">
            update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
        </update>
    
    1. 添加测试代码测试更新操作
        @Test
        public void testUserUpdate() throws IOException {
            // 1. 加载核心配置文件
            InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
            // 2. 获取sqlSessionFactory工厂对象
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            // 3. 获取sqlSession会话对象
            SqlSession sqlSession = sessionFactory.openSession();
    
            // 4. 创建需要新增的类对象,以及对类变量的赋值
            User user = new User();
            user.setId(3);
            user.setUsername("jack");
            user.setBirthday(new Date());
            user.setSex("男");
            user.setAddress("上海市浦东新区");
            // 5. 执行sql
            sqlSession.update("userMapper.updateUser", user);
    
            // 6.DML语句,手动提交事务
            sqlSession.commit();
            // 7.关闭释放资源
            sqlSession.close();
        }
    
    1. 注意事项
    • 更新语句使用update标签
    • 更新操作使用的API是sqlSession.update("namespace.id",实体对象)

    1.3.3 删除用户

    1. 编辑UserMapper.xml,增加delete标签的内容
    <!--删除用户-->
        <delete id="deleteUser" parameterType="java.lang.Integer">
            delete from user where id=#{id}
        </delete>
    
    1. 添加测试代码测试更新操作
         @Test
        public void testUserDelete() throws IOException {
            // 1. 加载核心配置文件
            InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
            // 2. 获取sqlSessionFactory工厂对象
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            // 3. 获取sqlSession会话对象
            SqlSession sqlSession = sessionFactory.openSession();
    
            // 4. 执行sql
            int insert = sqlSession.delete("userMapper.deleteUser", 4);
            System.out.println(insert);
            // 5.DML语句,手动提交事务
            sqlSession.commit();
            // 6.关闭释放资源
            sqlSession.close();
        }
    
    1. 注意事项
    • 删除语句使用delete标签
    • 删除操作使用的API是sqlSession.delete("namespace.id",实体对象)
    • xml中配置删除语句我们只需要传一个id,所以案例里面,我们使用了直接传递Interage参数的用法。

    MyBatis学习笔记系列
    MyBatis学习笔记-01MyBatis入门
    MyBatis学习笔记-02映射配置文件
    MyBatis学习笔记-03核心配置文件

    相关文章

      网友评论

          本文标题:MyBatis学习笔记-02映射配置文件

          本文链接:https://www.haomeiwen.com/subject/kdmyaktx.html