Mybatis的CRUD

目录

1、namespace命名空间

2、Insert

3、Delete

4、Update

5、Select

6、错误分析

7、Map对象

8、模糊查询


1、namespace命名空间

namespace中的包名要和 Dao/Mapper 中的接口的包名一致

  • id:就是对应namespace中的方法名

  • resultType:sql语句执行的返回值!

  • parameterType:参数类型

2、Insert

  1. 编写接口

         //insert一个用户
         int addUser(User user);
  2. 编写对应的mapper语句

        
         
             insert into user (id,name,pwd) values (#{id},#{name},#{pwd});
         
  3. 测试

         @Test
         public void addUser(){
             SqlSession sqlSession = MybatisUtils.getSqlSession();
     ​
             UserMapper mapper = sqlSession.getMapper(UserMapper.class);
     ​
             int i = mapper.addUser(new User(5, "sd", "546123"));
     ​
             if (i > 0) {
     ​
                 System.out.println("添加成功:"+i+"条记录");
     ​
             }else{
     ​
                 System.out.println("添加失败");
     ​
             }
     ​
             //提交事务,需要开启事务才可以对数据库进行更改(增删改)
             sqlSession.commit();
     ​
             sqlSession.close();
         }

3、Delete

  1. 编写接口

      //delete删除信息
         int deleteUser(int id);
  2. 编写对应的mapper语句

      
             delete from user where id = #{id};
         
  3. 测试

         @Test
         public void deleteUser(){
             SqlSession sqlSession = MybatisUtils.getSqlSession();
     ​
             UserMapper mapper = sqlSession.getMapper(UserMapper.class);
     ​
             int i = mapper.deleteUser(5);
     ​
             if (i > 0) {
     ​
                 System.out.println("删除:"+i+"条记录");
     ​
             }else{
     ​
                 System.out.println("删除失败");
     ​
             }
     ​
             //提交事务,需要开启事务才可以对数据库进行更改(增删改)
             sqlSession.commit();
     ​
             sqlSession.close();
         }

4、Update

  1. 编写接口

     //update修改用户信息
        int updateUser(User user);
  2. 编写对应的mapper语句

       
            update user set name=#{name},pwd=#{pwd} where id = #{id};
        
  3. 测试

    @Test
         public void updateUser(){
             SqlSession sqlSession = MybatisUtils.getSqlSession();
     ​
             UserMapper mapper = sqlSession.getMapper(UserMapper.class);
     ​
             int i = mapper.updateUser(new User(4, "邓冬梅", "123456"));
     ​
             if (i > 0) {
     ​
                 System.out.println("修改成功:"+i+"条记录");
     ​
             }else{
     ​
                 System.out.println("修改失败");
     ​
             }
     ​
             //提交事务,需要开启事务才可以对数据库进行更改(增删改)
             sqlSession.commit();
     ​
             sqlSession.close();
         }

5、Select

选择,查询语句

  1. 编写接口

        //获取所有用户
        List getUserList();
    
        //根据id查询用户
        List getUserById(int id);
    
        //根据用户名字查询用户
        List getUserByName(String name);
  2. 编写对应的mapper语句

       
         
     ​
         
         
     ​
         
         
  3. 测试

         @Test
         public void test() {
             //第一步:获得sqlsession对象
             SqlSession sqlSession = MybatisUtils.getSqlSession();
             try {
                 // 方式一:getMapper 执行sql
                 UserMapper mapper = sqlSession.getMapper(UserMapper.class);
                 List userList = mapper.getUserList();
     ​
                 //方式二:
                 List users = sqlSession.selectList("com.twit.Mapper.UserMapper.getUserList", userList);
     ​
                 for(User user : userList) {
                     System.out.println(user);
                 }
                 System.out.println("=================================");
                 for(User user : users) {
                     System.out.println(user);
                 }
             } catch (Exception e) {
                 throw new RuntimeException(e);
             }finally {
                 //关闭sqlSession
                 sqlSession.close();
             }
     ​
         }
         @Test
         public void getUserById(){
             SqlSession sqlSession = MybatisUtils.getSqlSession();
     ​
             UserMapper mapper = sqlSession.getMapper(UserMapper.class);
     ​
             List user = mapper.getUserById(1);
     ​
             System.out.println(user);
     ​
             sqlSession.close();
         }
     ​
         @Test
         public void getUserByName(){
             SqlSession sqlSession = MybatisUtils.getSqlSession();
     ​
             UserMapper mapper = sqlSession.getMapper(UserMapper.class);
     ​
             List user = mapper.getUserByName("张三");
     ​
             System.out.println(user);
     ​
             sqlSession.close();
         }

    注意点:

    • 增删改需要提交事务

6、错误分析

  • 标签不要匹配错误

  • resource目录下绑定mapper需要使用路径:

         
             
         
  • 程序配置文件必须符合规范

  • NullPointException,没有注册到资源

  • 输出的xml文件中存在中文乱码问题

  • maven资源到处问题

     
             
                 
                 
                     src/main/java
                     
                         **/*.xml 
                         **/*.properties 
                     
                     true 
                 
                 
                 
                     src/main/resources
                 
             
         

7、Map对象

假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map!

新增:

  1. 编写接口

       //使用Map加入数据库
         int addUser2(Mapmap);
  2. 编写对应的mapper语句

        
         
             insert into user (id,name,pwd) values (#{asd},#{dsad},#{fsdf});
         
  3. 测试

         @Test
         public void addUser2(){
             SqlSession sqlSession = MybatisUtils.getSqlSession();
     ​
             UserMapper mapper = sqlSession.getMapper(UserMapper.class);
     ​
             HashMap map = new HashMap<>();
     ​
             map.put("asd",1);
             map.put("dsad","sd");
             map.put("fsdf",23);
     ​
             int i = mapper.addUser2(map);
     ​
             if (i > 0) {
     ​
                 System.out.println("新增"+i+"条记录");
     ​
             }else {
     ​
                 System.out.println("新增失败");
     ​
             }
     ​
             sqlSession.commit();
     ​
             sqlSession.close();
     ​
         }

查询ID

1.编写接口

     //使用map根据id查询用户
     User getUserById2(Mapmap);

2.编译对应mapper

 
     

3.测试

     @Test
     public void getUserById2(){
         SqlSession sqlSession = MybatisUtils.getSqlSession();
 ​
         UserMapper mapper = sqlSession.getMapper(UserMapper.class);
 ​
         HashMap map = new HashMap();
 ​
         map.put("userid", 1);
 ​
         User userById2 = mapper.getUserById2(map);
 ​
         System.out.println(userById2);
 ​
         sqlSession.close();
 ​
     }
  1. Map传递参数,直接再sql中取出key即可【parameterType="map"】
  2. 对象传递参数,直接在sql 中去除对象的属性即可【parameterType="Object"】
  3. 只有一个基本类型的参数下,可以直接在sql中获取到
  4. 多个参数用Map,或者注解

8、模糊查询

1.编写接口

//模糊查询
     List getUserLike(String value);

2.编译对应mapper

  //模糊查询
     

3.测试

     @Test
     public void selectUserLike() {
         SqlSession sqlSession = MybatisUtils.getSqlSession();
 ​
         UserMapper mapper = sqlSession.getMapper(UserMapper.class);
 ​
         List userList = mapper.getUserLike("%张%");
 ​
         for (User user : userList) {
             System.out.println(user);
         }
 ​
         sqlSession.close();
     }
  1. Java代码执行的时候,传递通配符%%

     List userList = mapper.getUserLike("%张%");
  2. 在sql拼接中使用通配符

    select * from user where name like "%"#{value};


你可能感兴趣的:(mybatis,java,数据库)