# springboot-mybatisplus
**Repository Path**: ck_567/springboot-mybatisplus
## Basic Information
- **Project Name**: springboot-mybatisplus
- **Description**: No description available
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-09-25
- **Last Updated**: 2021-06-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# mybatis-plus
### 一、MyBatis-Plus简介
MyBatis-Plus(简称 MP)是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 官网文档地址: https://mybatis.plus/guide/
### 二、SpringBoot集成MybatisPlus
- 第一步:通过maven坐标将mybatis-plus-boot-starter以及数据库驱动引入到Spring
Boot项目里面来。注意:引入mybatis-plus-boot-starter的项目就不需要引入mybatis-spring-boot-starter了
com.baomidou
mybatis-plus-boot-starter
3.3.2
mysql
mysql-connector-java
- 第二步:保证application.yml里面有数据库连接的配置。 spring:
datasource:
url: jdbc:mysql://192.168.161.3:3306/testdb?useUnicode=true&characterEncoding=utf-8&useSSL=false username: test
password: 4rfv$RFV driver-class-name: com.mysql.cj.jdbc.Driver
- 第三步:配置Mybatis的Mapper类文件的包扫描路径
````java
@SpringBootApplication
@MapperScan(basePackages = {"com.ck567.boot.launch.generator", "com.ck567.boot.launch.mapper"})
public class BootLaunchApplication {
public static void main(String[] args) {
SpringApplication.run(BootLaunchApplication.class, args);
}
}
````
### 三、Mapper继承实现
如果我们操作数据库中的article表,我们需要按照article表的结构创建一个实体类。
````java
@Data
public class Article {
private Long id;
private String author;
private String content;
private String title;
private Date createtime;
}
````
然后写一个接口ArticleMapper ,继承自BaseMapper,泛型是Article实体类。
````java
public interface ArticleMapper extends BaseMapper {
}
````
BaseMapper中默认帮我们提供了若干的增删改查基础实现,由于ArticleMapper 继承自BaseMapper ,所以ArticleMapper 可以使用这些方法去操作数据库的article表。
### 四、增删改查实现代码
````java
@Service
public class ArtivleServiceImpl implements ArticleService {
@Resource
protected Mapper dozerMapper;
@Resource
private ArticleMapper articleMapper;
//新增
@Override
public void saveArticle(ArticleVO article) {
Article articlePO = dozerMapper.map(article, Article.class);
articleMapper.insert(articlePO);
}
//删除
@Override
public void deleteArticle(Long id) {
articleMapper.deleteById(id);
}
//更新
@Override
public void updateArticle(ArticleVO article) {
Article articlePO = dozerMapper.map(article, Article.class);
articleMapper.updateById(articlePO);
}
//查询
@Override
public ArticleVO getArticle(Long id) {
return dozerMapper.map(articleMapper.selectById(id), ArticleVO.class);
}
//查询所有
@Override
public List getAll() {
List articles = articleMapper.selectList(null);
return DozerUtils.mapList(articles, ArticleVO.class);
}
}
````
MybatisPlus的功能十分强大,还有很多有意义的功能,比如:逻辑删除、自动填充、代码生成等都非常有意义,能很大程度上提高我们的开发效率。
### 五、MybatisPlus与Mybatis XML
Mybatis Plus只是对Mybatis的增强,所以在使用mybatis plus的项目里面仍然可以使用mybatis xml的语法来实现ORM SQL映射(特别是动态SQL的书写)。
但是需要将扫描路径配置进行简单的调整,原始的配置是这样的 mybatis:
````xml
mapper-locations: classpath:generator/*.xml
````
调整之后的配置是这样的 mybatis-plus:
````xml
mapper-locations: classpath:generator/*.xml
````
---
条件构造器使用:
条件构造器用于给如下的Mapper方法传参,通常情况下: updateWrapper用于给update方法传条件参数 queryWrapper用于给delete和select方法传参
````java
public interface BaseMapper extends Mapper {
int delete(@Param("ew") Wrapper wrapper);
int update(@Param("et") T entity, @Param("ew") Wrapper updateWrapper);
T selectOne(@Param("ew") Wrapper queryWrapper);
Integer selectCount(@Param("ew") Wrapper queryWrapper);
List selectList(@Param("ew") Wrapper queryWrapper);
List