SpringBoot整合Mybatis之Mapper接口和映射文件

一、什么是MyBatis

MyBatis中文网https://mybatis.net.cn/

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

二、MyBatisPlus与MyBatis的关系

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。也就是说Mybatis拥有的功能,MybatisPlus全都拥有。所以SpringBoot在集合MyBatis-Plus 时,同时也集合了MyBatis。

三、maven依赖

1. SpringBoot整合mybatis的依赖


            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.2.2
 

2. SpringBoot整合mybatisPlus的依赖


    com.baomidou
    mybatis-plus-boot-starter
    3.4.2

四、配置:application.yml (MybatisPlus的配置)

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/reggie?serverTimezone=UTC
      username: root
      password: yqqlm@gs1cl

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath*:/mapper/**/*.xml

五、创建Mapper接口

Mapper接口中的方法用来操作数据库,调用接口中的方法时,会根据方法名匹配到sql语句。

六、映射文件

1、映射文件的命名规则

表所对应的实体类的类名+Mapper.xml

例如:表dish,映射的实体类为Dish,所对应的映射文件为DishMapper.xml

因此一个映射文件对应一个实体类,对应一张表的操作。

Mybatis映射文件用于编写SQL,访问以及操作表中的数据

Mybatis映射文件默认存放的位置是classpath*:/mapper/**/*.xml

2. Mybatis中可以面向接口操作数据,要保证两个一致

  • mapper接口的全类名和映射文件的命名空间(namespace)保持一致
  • mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致
@Mapper
public interface DishMapper extends BaseMapper {
    //Mybatis面向接口编程的两个一致
    Dish getDishByName(@Param("name") String name);
}

3. 映射文件的标准格式




    

七、详解映射文件

1. select标签


2. MyBatis获取参数值的两种方式

MyBatis获取参数值的两种方式:${}和#{}

${}的本质就是字符串拼接,#{}的本质就是占位符赋值。

${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或者日期类型的字段进行赋值时,可以自动添加单引号

3. mybatis获取参数的各种情况

  1. mapper接口方法的参数为单个字面量类型:可以通过${}和#{}以任意的名称获取参数值,但是要注意${}的单引号问题
  2. mapper接口方法的参数为多个时:此时mybatis会将这些参数放在一个map集合中,以两种方式进行存储1)以arg0,arg1...为键,以参数为值 2)以param0,param1...为键,以参数为值;因此只需要通过#{}和${}以键的方式访问值即可。
  3. 若mapper接口方法的参数有多个时,可以手动将这些参数放在一个map中存储,通过#{}和${}以键的方式访问值即可。
  4. mapper接口方法的参数是实体类类型的参数:只需要通过#{}和${}以属性的方式访问属性值即可。
  5. 使用@param注解命名参数:此时mybatis会将这些参数放在一个map集合中,以两种方式进行存储1)以@Param注解的值为键,以参数为值 2)以param0,param1...为键,以参数为值;因此只需要通过#{}和${}以键的方式访问值即可。

总结:1)实体类类型的参数以属性的方式访问属性值

            2)单个或多个参数时,使用@Param注解

你可能感兴趣的:(mybatis-plus,mybatis,spring,boot,java)