• 17.2、JavaWeb-简介、JDBC的缺点、入门使用、mybatis的使用、条件查询、mybatis的参数传递


    1、简介

    mybatis是一款优秀的持久层框架,用于简化jdbc开发

    2、JDBC的缺点

    硬编码(连接,赋值,结果集)、操作繁琐

    3、入门使用

    在这里插入图片描述

    4、mybatis的官网

    https://mybatis.net.cn/getting-started.html

    5、使用

    ● 在resources中新建一个配置文件mybatis-config.xml,内容如下:

    模板在mybatis的官网有

    
    
    
      
        
          
          
            
            
            
            
          
        
      
    <!--加载sql映射文件-->
      
    
    
    将下面的实体类对应的mapper绑定到mybatis中,resource和class都可以
      
        -- 
          
          
              -- 
                
      
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    ● 映射sql语句

    在resources中新建一个User(表名)Mapper.xml文件

    
    
    
    	
      
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    ● 建立表对应的实体类
    ● 定义dao接口,里面是增删改查的接口,之前都是在定义类实现dao接口,里面写增删改查的方法,连接数据库,执行sql,但是现在不用了,上面的User配置xml直接相当于之前实现dao的类了,里面直接写sql语句就可以了,不用写过多的sql执行逻辑,这里叫做mapper
    ● 最终代码执行,当然创建sqlSession的这几行代码也是官网固定的,可以写一个工具类方里面,返回sqlSession就可以了
    在这里插入图片描述

    // 1、 加载mybatis的核心配置文件,获取SqlSessionFactory
    
    // 官网有
    String resource = "org/mybatis/example/mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
    // 2、获取对应的SqlSession对象,用它来执行sql
    SqlSession sqlSession = sqlSessionFactory.openSession();
    
    sqlSession.getMapper(UserDao.class).selectAll.....
    
    //3、执行sql
    sqlSession.selectList(test.selectAll);	// 命名空间+id,直接返回
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    6、解决sql映射文件警告的问题

    不能识别数据库连接

    7、mybatis的sql条件查询

    在这里插入图片描述

    8、mybatis的sql的更新操作(dbapi也存在此问题)

    更新字段不固定,造成各种原因的错误
    逗号的问题、set的问题(不传参数时)
    eg:

    update aaa
    set
     
      and street_name = #{streetName},
     
     
      
      and tt = #{tt}
     
     where id = #{id}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    更改后:
    ● 将 set也写成标签的形式

    update aaa
    
       
           street_name = #{streetName},
       
      
        
        and tt = #{tt}
       
     
     where id = #{id}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    9、批量删除

    
      delete from tb_brand
      where id in
        
        #{id}
        
    
    将多个数据id装入数据中,遍历数组就可以实现批量删除
    ids:为数组名称
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    10、mybatis的多参数如何传递

    mybatis底层提供了一个ParamNameResolver类来进行封装

    1. 单个参数
      a. pojo,map集合,collection,list,array,其他类型
    2. 多个参数
      封装为map集合,可以使用@Param注解,替换Map集合中默认的arg键名
      map.put(“args1”,参数值1)
      map.put(“args2”,参数值2)
      map.put(“param1”,参数值1)
      map.put(“param1”,参数值2)
  • 相关阅读:
    C/C++文件操作(细节满满,part2)
    【编程题】【Scratch四级】2022.06 判断闰年
    Linux命令笔记
    系统学习SpringFrame:Spring概述
    PCIE
    stack容器、queue容器(20221116)
    JavaEE-多线程之进程的调度
    凉鞋的 Godot 笔记 101. Hello Godot!
    flutter 常用布局方式
    高阶数据结构(1):并查集 与 图
  • 原文地址:https://blog.csdn.net/nerer/article/details/126131207