• MyBatis


    尚硅谷mybatis

    一.mybatis快速入门

    使用xml配置实现。需要两个xml文件分别是

    二.mybatis的基本使用

    2.1mybatis配置文件的参数配置,sql语句中#{}(?占位符(推荐使用)) 和${}(是字符串拼接,可能引发sql注入问题)的区别

    2.2数据输入

    单值类型随便取名

    Employee selectEmployee(Integer empId);
    
    • 1
    <select id="selectEmployee" resultType="com.atguigu.mybatis.entity.Employee">
      select emp_id empId,emp_name empName,emp_salary empSalary from t_emp where emp_id=#{empId}
    select>
    
    • 1
    • 2
    • 3

    实体类型:取实体类名的属性,需要实体类有get方法
    多值类型:1.用@Param注解起别名 2.用Mybatis默认的取名规则arg0开始
    map类型:取map的键值对

    2.3数据输出

    sql语句默认返回int类型(操作影响的行数)

    细节解释:
    select标签,通过resultType指定查询返回值类型!
    resultType = “全限定符 | 别名 | 如果是返回集合类型,写范型类型即可”

    取别名:

    <typeAliases>
      <typeAlias alias="Author" type="domain.blog.Author"/>
      <typeAlias alias="Blog" type="domain.blog.Blog"/>
    typeAliases>
    
    • 1
    • 2
    • 3
    • 4

    返回实体类型
    1:取别名
    2:开启驼峰映射(Java中 ClassPath =sql中 class_path)
    返回map

    
    
    <select id="selectEmpNameAndMaxSalary" resultType="map">
      SELECT
        emp_name 员工姓名,
        emp_salary 员工工资,
        (SELECT AVG(emp_salary) FROM t_emp) 部门平均工资
      FROM t_emp WHERE emp_salary=(
        SELECT MAX(emp_salary) FROM t_emp
      )
    select>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    返回List类型

    自增长的主键回显

    在这里插入图片描述
    非自增长的主键维护
    在这里插入图片描述

    三.多表映射

    根据ID查询订单,以及订单关联的用户的信息!
    多对一的关系

    
    
    
    <resultMap id="selectOrderWithCustomerResultMap" type="order">
    
      
      <id column="order_id" property="orderId"/>
    
      <result column="order_name" property="orderName"/>
    
      
      
      
      <association property="customer" javaType="customer">
    
        
        <id column="customer_id" property="customerId"/>
        <result column="customer_name" property="customerName"/>
    
      association>
    
    resultMap>
    
    
    <select id="selectOrderWithCustomer" resultMap="selectOrderWithCustomerResultMap">
    
      SELECT order_id,order_name,c.customer_id,customer_name
      FROM t_order o
      LEFT JOIN t_customer c
      ON o.customer_id=c.customer_id
      WHERE o.order_id=#{orderId}
    
    select>
    
    • 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

    一对多的关系
    查询客户和客户关联的订单信息!

    
    <resultMap id="selectCustomerWithOrderListResultMap"
    
      type="customer">
    
      
      <id column="customer_id" property="customerId"/>
    
      <result column="customer_name" property="customerName"/>
    
      
      
      
      <collection property="orderList" ofType="order">
    
        
        <id column="order_id" property="orderId"/>
    
        <result column="order_name" property="orderName"/>
    
      collection>
    
    resultMap>
    
    
    <select id="selectCustomerWithOrderList" resultMap="selectCustomerWithOrderListResultMap">
      SELECT c.customer_id,c.customer_name,o.order_id,o.order_name
      FROM t_customer c
      LEFT JOIN t_order o
      ON c.customer_id=o.customer_id
      WHERE c.customer_id=#{customerId}
    select>
    
    • 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

    此外可以在setting属性中开启驼峰映射

    setting属性属性含义可选值默认值
    autoMappingBehavior指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示关闭自动映射;PARTIAL 只会自动映射没有定义嵌套结果映射的字段。 FULL 会自动映射任何复杂的结果集(无论是否嵌套)。NONE, PARTIAL, FULLPARTIAL

    我们可以将autoMappingBehavior设置为full,进行多表resultMap映射的时候,可以省略符合列和属性命名映射规则(列名=属性名,或者开启驼峰映射也可以自定映射)的result标签!

    四.动态mysql

    五.扩展

    5.1批量映射(批量映射接口)

    5.2PageHelper分页插件

    5.3逆向工程(单表)

  • 相关阅读:
    python+vue+elementui企业会议管理系统django
    Leetcode 2269. 找到一个数字的 K 美丽值(滑动窗口)
    人工智能在教育上的应用2-基于大模型的未来数学教育的情况与实际应用
    RTU通讯控制器S274如何操作
    Rockchip Android平台常用调试命令汇总
    感受Vue (1) —— Hello world
    Andorid获取原生GPS定位信息
    在Vue中实现可编辑的表格
    杀死僵尸进程
    「设计模式」建造者模式
  • 原文地址:https://blog.csdn.net/xunzhaofupo/article/details/133776849