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

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

1.3 映射配置文件概述

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

UserMapper文件解释

1.3.1 新增用户

  1. 编辑UserMapper.xml,增加insert标签的内容

    
    
        insert into user(username, birthday, sex, address) values (#{username}, #{birthday}, #{sex}, #{address})
    

#{} : 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 user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
    
  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 from user where id=#{id}
    
  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映射配置文件)