前言: mybatis是现在国内比较流行的持久层框架,一般项目都是基于ssm.虽然mybatis可以直接在xml中使用SQL语句操作数据库,但是所有的操作都要通过xml文件,需要写大量的sql语句和xml文件,对于开发效率不是很友好。muybatis-plus就很好的解决这个问题。
集成mybatis plus 一
一、mybatis-plus 简介:
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。下面简单的做些概述。
mybatis plus概述 :
- 是对Mybatis框架的二次封装和扩展
- 纯正血统:完全继承原生 Mybatis 的所有特性
- 少依赖:仅仅依赖Mybatis以及Mybatis-Spring
- 性能损耗小:启动即会自动注入基本CURD ,性能无损耗,直接面向对象操作
- 自动热加载:Mapper对应的xml可以热加载,大大减少重启Web服务器时 间,提升开发效率
- 全局拦截:提供全表delete、update操作智能分析阻断
- 避免Sql注入:内置Sql注入内容剥离器,预防Sql注入攻击
二、ssm项目集成mybatis-plus
正如官方所说,mybatis-plus在mybatis的基础上只做增强不做改变,因此mybatis-plus的依赖是与mybatis的依赖不共存的,我们只需把mybatis的依赖换成mybatis-plus的依赖,再把sqlSessionFactory换成mybatis-plus的即可。
1.在pom.xml文件中引入相关依赖
<!-- mybatis-plus begin -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatisplus-spring-boot-starter</artifactId>
<version>${mybatisplus-spring-boot-starter.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatisplus.version}</version>
</dependency>
<!-- mybatis-plus end -->
2.在配置文件application.yml中添加相关配置
# Mybatis-Plus 配置
mybatis-plus:
# mapper-locations: classpath:/mapper/*Mapper.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.***.***.pojo
global-config:
id-type: 1 #0:数据库ID自增 1:用户输入id
db-column-underline: false
refresh-mapper: true
configuration:
map-underscore-to-camel-case: true
cache-enabled: true #配置的缓存的全局开关
lazyLoadingEnabled: true #延时加载的开关
multipleResultSetsEnabled: true #开启延时加载,否则按需加载属性
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用
3.修改启动类,增加Mapper扫描注解
@SpringBootApplication
//Mapper扫描注解
@MapperScan("com.***.***.dao")
public class ArticleApplication {
public static void main(String[] args) {
SpringApplication.run(ArticleApplication.class, args);
}
}
三、例子:查询数据库中所有数据
1.创建相应的实体类
@Getter
@Setter
// 映射相对应的表
@TableName("tb_user")
public class user implements Serializable {
@TableId(type = IdType.INPUT)
private String id;//ID
private String name;
private String ad;
private String token;
private String headpic;
private String restrict;
}
2.编写数据访问接口dao
public interface UserDao extends BaseMapper<user> {
}
3.编写service
@Service
public class ArticleService {
@Autowired
private UserDao userDao;
public List<User> findAll() {
// 调用mybatis-plusAPI时发现没有find只有select,而且selectList是携带参数,当我们需要查询全部时直接传一个null值就可以。
return userDao.selectList(null);
}
}
4.编写controller
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(method = RequestMethod.GET)
public Result findAll() {
List list = userService.findAll();
return new Result(true, StatusCode.OK, "查询成功", list);
}
}