一、MyBatis-Plus简介
MyBatis-Plus(简称 MP)是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
官网文档地址: 简介 | MyBatis-Plus
二、SpringBoot集成MybatisPlus
第一步:通过maven坐标将mybatis-plus-boot-starter以及数据库驱动引入到Spring Boot项目里面来。注意:引入mybatis-plus-boot-starter的项目就不需要引入mybatis-spring-boot-starter了
<code class="language-plaintext hljs"><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency></code>
第二步:保证application.yml里面有数据库连接的配置。
<code class="language-plaintext hljs">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</code>
第三步:配置Mybatis的Mapper类文件的包扫描路径
<code class="language-plaintext hljs">
@SpringBootApplication
@MapperScan(basePackages ={"com.zimug.boot.launch.generator","com.zimug.boot.launch.mapper"})
public class BootLaunchApplication{
public static void main(String[] args){
SpringApplication.run(BootLaunchApplication.class, args);}}</code>
三、Mapper继承实现
如果我们操作数据库中的article表,我们需要按照article表的结构创建一个实体类。
<code class="language-plaintext hljs">@Data
public class Article{
private Long id;
private String author;
private String content;
private String title;
private Date createtime;}</code>
然后写一个接口ArticleMapper ,继承自BaseMapper,泛型是Article实体类。
<code class="language-plaintext hljs">public interface ArticleMapper extends BaseMapper<Article>{}</code>
BaseMapper中默认帮我们提供了若干的增删改查基础实现,由于ArticleMapper 继承自BaseMapper
,所以ArticleMapper 可以使用这些方法去操作数据库的article表。
四、增删改查实现代码
<code class="language-plaintext hljs">@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<ArticleVO>getAll(){
List<Article> articles = articleMapper.selectList(null);return DozerUtils.mapList(articles,ArticleVO.class);}}</code>
MybatisPlus的功能十分强大,还有很多有意义的功能,比如:逻辑删除、自动填充、代码生成等都非常有意义,能很大程度上提高我们的开发效率。
我们这本书主要核心是Spring Boot,所以主要内容也是讲解在Spring Boot中如何集成MybatisPlus,更多的内容的学习可以参考我写的mybatis plus的文档(免费),地址:mybatisplus小书
五、MybatisPlus与Mybatis XML
Mybatis Plus只是对Mybatis的增强,所以在使用mybatis plus的项目里面仍然可以使用mybatis xml的语法来实现ORM SQL映射(特别是动态SQL的书写)。
但是需要将扫描路径配置进行简单的调整,原始的配置是这样的
<code class="language-plaintext hljs">mybatis:
mapper-locations: classpath:generator/*.xml</code>
调整之后的配置是这样的
<code class="language-plaintext hljs">mybatis-plus:
mapper-locations: classpath:generator/*.xml</code>