zoukankan      html  css  js  c++  java
  • MyBatis——增删改查(CRUD)

    准备工作:创建在com.jiang.pojo中创建实体类

    package com.jiang.pojo;
    
    import lombok.Data;
    
    
    //实体类
    
    @Data
    public class User {
        private int id;
        private String name;
        private String pwd;
    
    
    }
    
    

    1、namespace

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

    2、select

    选择,查询语句;

    • id : 就是对应的namespace中的方法名;
    • resultType:Sql语句执行的返回值!
    • parameterType : 参数类型!
    1. 编写UserMapper接口

      //根据ID查询用户
      User getUserById(int id);
      
    2. 编写对应的UserMapper中的sql语句

      <select id="getUserById" parameterType="int" resultType="com.jiang.pojo.User">
              select * from mybatis.user where id = #{id}
      </select>
      
      
    3. 测试

          @Test
          public void getUserById() {
              SqlSession sqlSession = MybatisUtils.getSqlSession();
      
              UserMapper mapper = sqlSession.getMapper(UserMapper.class);
      
              User user = mapper.getUserById(1);
              System.out.println(user);
      
              sqlSession.close();
          }
      
      

    3、Insert

    1. 编写UserMapper接口

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

       <insert id="addUser" parameterType="com.jiang.pojo.User">
              insert into mybatis.user (id, name, pwd) values (#{id},#{name},#{pwd});
          </insert>
      
    3. 测试

      package com.jiang.dao;
      
      import com.jiang.pojo.User;
      import com.jiang.utils.MybatisUtils;
      import org.apache.ibatis.session.SqlSession;
      import org.junit.Test;
      
      import java.util.List;
      
      public class UserDaoTest {
      
          @Test
          public void getUserLike(){
              SqlSession sqlSession = MybatisUtils.getSqlSession();
      
              UserMapper mapper = sqlSession.getMapper(UserMapper.class);
      
              int i = mapper.addUser(new User(5, "姜嘉航","465123"));
              if (i>0){
                  System.out.println("插入成功");
              }
              //提交事务
              sqlSession.commit();
              sqlSession.close();
          }
      
      
      }
      
      

    4、update

    1. 编写UserMapper接口

         //修改用户
          int updateUser(User user);
      
    2. 编写对应的UserMapper中的sql语句

          <update id="updateUser" parameterType="com.jiang.pojo.User">
              update mybatis.user set name=#{name},pwd=#{pwd}  where id = #{id} ;
          </update>
      
    3. 测试

      package com.jiang.dao;
      
      import com.jiang.pojo.User;
      import com.jiang.utils.MybatisUtils;
      import org.apache.ibatis.session.SqlSession;
      import org.junit.Test;
      
      import java.util.List;
      
      public class UserDaoTest {
      
          @Test
          public void getUserLike(){
              SqlSession sqlSession = MybatisUtils.getSqlSession();
      
              UserMapper mapper = sqlSession.getMapper(UserMapper.class);
      
              int i = mapper.updateUser(new User(5, "哈哈","1265123"));
              if (i>0){
                  System.out.println("更新成功");
              }
              //提交事务
              sqlSession.commit();
              sqlSession.close();
          }
      
      
      }
      
      

    5、Delete

    1. 编写UserMapper接口

          //删除一个用户
          int deleteUser(int id);
      
    2. 编写对应的UserMapper中的sql语句

          <delete id="deleteUser" parameterType="int">
              delete from mybatis.user where id = #{id};
          </delete>
      
    3. 测试

      package com.jiang.dao;
      
      import com.jiang.pojo.User;
      import com.jiang.utils.MybatisUtils;
      import org.apache.ibatis.session.SqlSession;
      import org.junit.Test;
      
      import java.util.List;
      
      public class UserDaoTest {
      
          @Test
          public void getUserLike(){
              SqlSession sqlSession = MybatisUtils.getSqlSession();
      
              UserMapper mapper = sqlSession.getMapper(UserMapper.class);
      
              mapper.deleteUser(5);
              System.out.println("删除成功");
              sqlSession.commit();
              sqlSession.close();
          }
      
      
      }
      
      

    注意点:

    • 增删改需要提交事务!( sqlSession.commit();)

    6、万能Map

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

    1. 编写接口
        //万能的Map
        int addUser2(Map<String,Object> map);
    
    
    1. 编写mapper.xml
        <!--对象中的属性,可以直接取出来    传递map的key-->
        <insert id="addUser" parameterType="map">
            insert into mybatis.user (id, pwd) values (#{userid},#{passWord});
        </insert>
    
    1. 测试
        @Test
        public void addUser2(){
            SqlSession sqlSession = MybatisUtils.getSqlSession();
    
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    
    
            Map<String, Object> map = new HashMap<String, Object>();
    
            map.put("userid",5);
            map.put("passWord","2222333");
    
            mapper.addUser2(map);
    
            sqlSession.close();
        }
    
    

    Map传递参数,直接在sql中取出key即可! 【parameterType="map"】

    对象传递参数,直接在sql中取对象的属性即可!【parameterType="Object"】

    只有一个基本类型参数的情况下,可以直接在sql中取到!

    多个参数用Map,或者注解!

    7、模糊查询

    1. Java代码执行的时候,传递通配符 % %

      1. 编写接口
      List<User> userList = mapper.getUserLike("%李%");
      

      2.编写mapper.xml

       <select id="getUserLike" resultType="com.kuang.pojo.User">
              select * from mybatis.user where name like "%"#{value}"%"
          </select>
      

      3.测试

      public class UserDaoTest {
      
          @Test
          public void getUserLike(){
              SqlSession sqlSession = MybatisUtils.getSqlSession();
      
              UserMapper mapper = sqlSession.getMapper(UserMapper.class);
      
              List<User> userList = mapper.getUserLike("%李%");
      
              for (User user : userList) {
                  System.out.println(user);
              }
      
              sqlSession.close();
          }
      
    2. 在sql拼接中使用通配符!

      select * from mybatis.user where name like "%"#{value}"%"
      
  • 相关阅读:
    Mybatis学习(2)原始dao开发和使用mapper接口代理开发
    Mybatis学习(1)
    Leetcode | Merge Intervals
    GDB打印STL容器内容
    LeetCode | Max Points on a Line
    最长不减子序列【转】
    LeetCode | Evaluate Reverse Polish Notation
    LeetCode | Word Ladder II
    LeetCode | Valid Number
    LeetCode | Set Matrix Zeroes
  • 原文地址:https://www.cnblogs.com/godles/p/12333896.html
Copyright © 2011-2022 走看看