MyBatis进阶学习

1.如何复制Maven项目

  • 1.复制文件夹,修改名字
  • 2.修改.iml文件的名字和文件夹名字一致
  • 3.修改.xml中  为文件夹名字MyBatis进阶学习_第1张图片MyBatis进阶学习_第2张图片

2.MyBatis增删改查

MyBatis三种开发方式

  • ①接口代理的开发方式(重点)
  • ②使用注解的开发方式(重点)
  • ③传统DAO实现类的开发方式(目前淘汰) 

1.根据id查询

注意:

  1. #{变量} select * from user where id=?;?表示占位符,是预编译的效果,不会有SQL注入的问题;
  2. ${变量} select * from user where id=1;直接拼接字符串,会有SQL注入的问题;
  3. resultType 封装的结果对象,如果返回需要集合,可以直接写对象;
  4. parameterType 表示参数类型,基本上不写;
  5. 特殊字符需要被处理:第一种方法:使用转义符;第二种方法:CD转义符 ;

MyBatis进阶学习_第3张图片

2.删除一个用户

注意:

  1. 删除一定要用delete标签,虽然用select也可以,但是不会事务拦截,会出现问题;
  2. 增删改需要提交事务;

MyBatis进阶学习_第4张图片 3.修改数据

MyBatis进阶学习_第5张图片

4.添加数据

注意:

  1. useGeneratedKeys="true":要获取数据库返回的主键值;
  2. keyProperty="id":把获取的主键值放回原来对象的id属性里面;

MyBatis进阶学习_第6张图片

3.获取新增记录的主键值

  1. useGeneratedKeys="true":要获取数据库返回的主键值;
  2. keyProperty="id":把获取的主键值放回原来对象的id属性里面;

MyBatis进阶学习_第7张图片

 
        INSERT INTO user
        VALUES (null, #{userName}, #{birthday}, #{sex}, #{address});
    



 @Test
    public void test06() throws IOException {
        //测试mybatis的搭建情况
        //1.标记mybatis的配置环境
        String resource = "mybatis-config.xml";
        //2.加载配置环境信息
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //3.根据配置信息生成sqlSessionFactory对象,相当于连接池
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //4.从连接池获取连接
        //4.1可以设置自动提交
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        //5.获取执行sql语句的对象
        UserMapper usermapper = sqlSession.getMapper(UserMapper.class);
        //6.调用方法:执行sql语句
        User user = new User(null, "王母娘娘", Date.valueOf("2022-11-10"), "女", "云宵殿");
        usermapper.add(user);
        //返回自增的id
        System.out.println(user.getId());
        //查询id对应的对象信息,做登录操作
      //  usermapper.selectById(user.getId());
        //6.手动提交事务
        //sqlSession.commit();
        //7.释放资源
        sqlSession.close();
    }

4.方法多个参数

 注意多参数查询默认只能按照两种方式传参:方式1:arg0,arg1;

                                                                      方式2:param1,param2,param3

自己配置的话比较有意义,有三种方式:

  • ①散装参数:如果方法中有多个参数,需要使用@Param("SQL参数占位符名称")
  • ②对象参数:对象的属性名称要和占位符名称一样
  • ③Map集合参数:Map的键要和占位符名称一致 
  //方案1:散装的方式
    /*List selectByCondition(@Param("username")String username,
                                 @Param("sex")String sex);*/

 List userList1 = usermapper.selectByCondition("王%", "女");

    //方案2:对象参数
  /*  List selectByCondition(User user);*/


 //方案二
        /*User user = new User();
        user.setUsername("王%");
        user.setSex("女");
        List userList = usermapper.selectByCondition(user);*/

 //方案3:Map键值对
    List selectByCondition(Map map);
  //方案三
        Map map=new HashMap<>();
        map.put("username","王%");
        map.put("sex","女");
        List userList = usermapper.selectByCondition(map);

MyBatis进阶学习_第8张图片

5.动态SQL的概念 

1.多条件查询

MyBatis进阶学习_第9张图片





    
    

    

 @Test //运行测试
    public void test08() throws IOException {
        //测试mybatis的搭建情况
        //1.标记mybatis的配置环境
        String resource = "mybatis-config.xml";
        //2.加载配置环境信息
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //3.根据配置信息生成sqlSessionFactory对象,相当于连接池
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //4.从连接池获取连接
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //5.获取执行sql语句的对象
        UserMapper usermapper = sqlSession.getMapper(UserMapper.class);
        //6.调用方法:执行sql语句
        List userList = usermapper.selectByIf("", "");
        userList.forEach(System.out::println);
        //7.释放资源
        sqlSession.close();

    }

2.修改部分字段数据 

set标签修改数据

MyBatis进阶学习_第10张图片

 
    
        update user
        
            
                username=#{username},
            
            
                birthday=#{birthday},
            
            
                sex=#{sex},
            
            
                address=#{address}
            
        
        where id = #{id};
    

  @Test
    public void test09() throws IOException {
        //测试mybatis的搭建情况
        //1.标记mybatis的配置环境
        String resource = "mybatis-config.xml";
        //2.加载配置环境信息
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //3.根据配置信息生成sqlSessionFactory对象,相当于连接池
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //4.从连接池获取连接
        //4.1可以设置自动提交
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        //5.获取执行sql语句的对象
        UserMapper usermapper = sqlSession.getMapper(UserMapper.class);
        //6.调用方法:执行sql语句
        User user = new User();
        user.setId(10);
        user.setUsername("王大姐");
        usermapper.updateByIf(user);
        //6.手动提交事务
        //sqlSession.commit();
        //7.释放资源
        sqlSession.close();
    }

 3.批量删除用户

MyBatis进阶学习_第11张图片

 
        delete from user where id in
        
           #{id}
        
    

 @Test
    public void test10() throws IOException {
        //测试mybatis的搭建情况
        //1.标记mybatis的配置环境
        String resource = "mybatis-config.xml";
        //2.加载配置环境信息
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //3.根据配置信息生成sqlSessionFactory对象,相当于连接池
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //4.从连接池获取连接
        //4.1可以设置自动提交
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        //5.获取执行sql语句的对象
        UserMapper usermapper = sqlSession.getMapper(UserMapper.class);
        //6.调用方法:执行sql语句
        usermapper.deleteByArray(new int[]{12,13,14,15,16});
        //6.手动提交事务
        //sqlSession.commit();
        System.out.println("删除成功");
        //7.释放资源
        sqlSession.close();
    }

4.choose标签 

MyBatis进阶学习_第12张图片 5.sql和include标签(了解)

MyBatis进阶学习_第13张图片

   
    
        id,username,birthday,sex,address
    
    

 @Test
    public void test12() throws IOException {
        //测试mybatis的搭建情况
        //1.标记mybatis的配置环境
        String resource = "mybatis-config.xml";
        //2.加载配置环境信息
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //3.根据配置信息生成sqlSessionFactory对象,相当于连接池
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //4.从连接池获取连接
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //5.获取执行sql语句的对象
        UserMapper usermapper = sqlSession.getMapper(UserMapper.class);
        //6.调用方法:执行sql语句
        List userList = usermapper.selectBySQL();
        userList.forEach(System.out::println);
        //7.释放资源
        sqlSession.close();
    }

 6.查询order表数据准备 

7.resultMap处理结果集映射的三种方法

MyBatis进阶学习_第14张图片

MyBatis进阶学习_第15张图片

  
    
        
        
        
    
    

你可能感兴趣的:(mybatis,学习,java)