MyBatis&MyBatisPlus应用
MyBatis配置
mybatis:
mapper-locations: classpath:mapper/*.xml #扫描所有mybatis的xml文件
#mybatis日志,可以在控制台打印具体执行的sql语句
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
MyBatis xml映射文件格式
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Mapper接口的全限定名称">
这里写sql
</mapper>
MyBatis动态sql复习
<if>
对于该标签的执行,当 test 的值为 true 时,会将其包含的 SQL 片断拼接到其所在的 SQL 语句中。
语法:<if test="条件"> sql 语句的部分 </if>
<where>
<if/>标签的中存在一个比较麻烦的地方:需要在 where 后手工添加 1=1 的子句。因为,若 where 后
的所有<if/>条件均为 false,而 where 后若又没有 1=1 子句,则 SQL 中就会只剩下一个空的 where,SQL
出错。所以,在 where 后,需要添加永为真子句 1=1,以防止这种情况的发生。但当数据量很大时,会
严重影响查询效率
使用<where/>标签,在有查询条件时,可以自动添加上 where 子句;没有查询条件时,不会添加
where 子句。需要注意的是,第一个<if/>标签中的 SQL 片断,可以不包含 and。不过,写上 and 也不错,
系统会将多出的 and 去掉。但其它<if/>中 SQL 片断的 and,必须要求写上。否则 SQL 语句将拼接出错
(<where>标签解决直接用where需要添加1=1影响效率的问题)
语法:<where> 其他动态 sql </where>
<foreach>
<foreach/>标签用于实现对于数组与集合的遍历。对其使用,需要注意:collection 表示要遍历的集合类型, list ,array 等。open、close、separator 为对遍历内容的 SQL 拼接。
语法:
<foreach collection="集合类型" open="开始的字符" close="结束的字符"
item="集合中的成员" separator="集合成员之间的分隔符">
#{item 的值}
</foreach>
MyBatisPlus依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
Mapper接口继承BaseMapper<>
public interface UserMapper extends BaseMapper<User> {
}
使用MybatisPlus通用的service
Service接口 继承 IService<T>接口,然后 Service接口的实现类 继承 ServiceImpl<操作实体的Mapper接口,具体实现类>,最后在ServiceImpl实现类添加@Service注解将该实现类作为Spring容器下的Bean
MybatisPlus分页插件的配置类
MyBatisPlusConfig.java
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
*@Description 使用mybatis-plus分页插件的配置
*@Author SheepHe
*@Date 2022/3/10 18:57
**/
@Configuration
@MapperScan("com.sheephe.springboot.mapper") ////扫描所有的mapper接口(不要放在启动类上,统一放在配置类上)
public class MybatisPlusConfig {
/**
* 最新版
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
MyBatisPlus日志配置
#使用了mybatis-plus的日志配置
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
MybatisPlus 代码生成器
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>