MyBatis学习笔记-02-CRUD


CRUD.

目录结构

1、namespace.

  • UserMapper.xmlnamespace中的包名与Dao/mapper接口的包名一致
<mapper namespace="dao.UserMapper">

2、select.

选择,查询语句

  • id:对应方法名
  • resultType:sql语句执行的返回值
  • parameterType:参数类型
  • 对应标签:select
<select id="getUserList" resultType="pojo.User">
    select * from mybatis.user;
</select>
    <select id="getUserById" resultType="pojo.User" parameterType="int">
    select * from mybatis.user where id = #{id};
</select>

3、insert.

插入

  • id:对应方法名
  • parameterType:参数类型
  • 对应标签:insert
<insert id="addUser" parameterType="pojo.User">
    <!-- #{name}需要与User.java字段名一致,同时与数据库属性名一致 -->
    insert into mybatis.user(name,pwd) values (#{name},#{pwd});
</insert>

4、update.

更新

  • id:对应方法名
  • parameterType:参数类型
  • 对应标签:update
<update id="updateUserPwd" parameterType="pojo.User">
    update mybatis.user set pwd=#{pwd} where id=#{id};
</update>

5、delete.

删除

  • id:对应方法名
  • parameterType:参数类型
  • 对应标签:delete
<delete id="deleteUser" parameterType="int">
    delete from mybatis.user where id=#{id};
</delete>

6、编写流程.

  1. UserMapper.java添加相应的方法

  2. UserMapper.xml添加相应的标签以及SQL语句(注意namespace

  3. mybatis-config.xml中绑定UserMapper.xml

  4. test/java中编写UserMapperTest测试类

    //测试类内容
    public class UserMapperTest {
    
        @Test
        public void getUserList(){
    
            try(SqlSession sqlSession = MybatisUtils.getSqlSession();) {
                UserMapper userDao = sqlSession.getMapper(UserMapper.class);
    
                List<User> userList = userDao.getUserList();
    
                userList.stream().forEach(System.out::println);
    
    //            return userList;
            }
        }
    
        @Test()
        public void getUserById(/*int id*/){
            try(SqlSession sqlSession = MybatisUtils.getSqlSession();) {
                UserMapper userDao = sqlSession.getMapper(UserMapper.class);
                int id = 2;
                User user = userDao.getUserById(id);
    
                System.out.println(user);
    //            return user;
            }
        }
    
        @Test
        public void addUser(){
            try(SqlSession sqlSession = MybatisUtils.getSqlSession();) {
                UserMapper userDao = sqlSession.getMapper(UserMapper.class);
    
                User user = new User("流柚","liuyou");
    
                int num = userDao.addUser(user);
    
                //增删改一定要提交 不然 虽然 num > 0 但是 数据库中的数剧不会有任何变化
                sqlSession.commit();
                System.out.println(num);
            }
        }
    
        @Test
        public void updateUserPwd(){
            try(SqlSession sqlSession = MybatisUtils.getSqlSession();) {
                UserMapper userDao = sqlSession.getMapper(UserMapper.class);
    
                User user = new User(1,null,"lmk");
    
                int num = userDao.updateUserPwd(user);
    
                sqlSession.commit();
                System.out.println(num);
            }
        }
    
        @Test
        public void deleteUser(){
            try(SqlSession sqlSession = MybatisUtils.getSqlSession();) {
                UserMapper userDao = sqlSession.getMapper(UserMapper.class);
    
                int num = userDao.deleteUser(3);
                sqlSession.commit();
                System.out.println(num);
            }
        }
    
    }

7、注意.

  • 增删改操作是需要 SqlSession.commit();提交的,不然无法对数据库进行修改(尽管返回的影响记录数大于0)

  • 标签不要匹配错

  • 排错,需从下往上读


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

Related Issues not found

Please contact @liuminkai-blog to initialize the comment

 上一篇
MyBatis学习笔记-03-万能Map MyBatis学习笔记-03-万能Map
万能Map. 假设,我们的实体类 或者 数据库中的表,字段或者参数过多,可以考虑使用Map 很像构造器 (带参,但是参数数量,类型,可以变化) 给字段起别名 其实可以在实体类中 生成所有带参的构造器,但是事先写好,使用Map按需求写就行
2020-07-22
下一篇 
maven项目pom.xml文件配置 maven项目pom.xml文件配置
pom.xml <build> <!--解决maven刷新后 jdk变为 jdk5的问题 方法一--> <plugins> <plugin> <group
2020-07-22