天天看點

SpringBoot2.0 基礎案例(10):整合Mybatis架構,內建分頁助手插件

本文源碼:GitHub·點這裡 || GitEE·點這裡

一、Mybatis架構

1、mybatis簡介

MyBatis 是一款優秀的持久層架構,它支援定制化 SQL、存儲過程以及進階映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設定參數以及擷取結果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)為資料庫中的記錄。

2、mybatis特點

1)sql語句與代碼分離,存放于xml配置檔案中,友善管理
2)用邏輯标簽控制動态SQL的拼接,靈活友善
3)查詢的結果集與java對象自動映射
4)編寫原生态SQL,接近JDBC
5)簡單的持久化架構,架構不臃腫簡單易學
           

3、适用場景

MyBatis專注于SQL本身,是一個足夠靈活的DAO層解決方案。

對性能的要求很高,或者需求變化較多的項目,MyBatis将是不錯的選擇。

二、與SpringBoot2.0整合

1、項目結構圖

SpringBoot2.0 基礎案例(10):整合Mybatis架構,內建分頁助手插件

采用druid連接配接池,該連接配接池。

2、核心依賴

<!-- mybatis依賴 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>
<!-- mybatis的分頁插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.6</version>
</dependency>
           

3、核心配置

mybatis:
  # mybatis配置檔案所在路徑
  config-location: classpath:mybatis.cfg.xml
  type-aliases-package: com.boot.mybatis.entity
  # mapper映射檔案
  mapper-locations: classpath:mapper/*.xml
           

4、逆向工程生成的檔案

SpringBoot2.0 基礎案例(10):整合Mybatis架構,內建分頁助手插件

這裡就不貼代碼了。

5、編寫基礎測試接口

// 增加
int insert(ImgInfo record);
// 組合查詢
List<ImgInfo> selectByExample(ImgInfoExample example);
// 修改
int updateByPrimaryKeySelective(ImgInfo record);
// 删除
int deleteByPrimaryKey(Integer imgId);
           

6、編寫接口實作

@Service
public class ImgInfoServiceImpl implements ImgInfoService {
    @Resource
    private ImgInfoMapper imgInfoMapper ;
    @Override
    public int insert(ImgInfo record) {
        return imgInfoMapper.insert(record);
    }
    @Override
    public List<ImgInfo> selectByExample(ImgInfoExample example) {
        return imgInfoMapper.selectByExample(example);
    }
    @Override
    public int updateByPrimaryKeySelective(ImgInfo record) {
        return imgInfoMapper.updateByPrimaryKeySelective(record);
    }
    @Override
    public int deleteByPrimaryKey(Integer imgId) {
        return imgInfoMapper.deleteByPrimaryKey(imgId);
    }
}
           

7、控制層測試類

@RestController
public class ImgInfoController {
    @Resource
    private ImgInfoService imgInfoService ;
    // 增加
    @RequestMapping("/insert")
    public int insert(){
        ImgInfo record = new ImgInfo() ;
        record.setUploadUserId("A123");
        record.setImgTitle("博文圖檔");
        record.setSystemType(1) ;
        record.setImgType(2);
        record.setImgUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");
        record.setLinkUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");
        record.setShowState(1);
        record.setCreateDate(new Date());
        record.setUpdateDate(record.getCreateDate());
        record.setRemark("知了");
        record.setbEnable("1");
        return imgInfoService.insert(record) ;
    }
    // 組合查詢
    @RequestMapping("/selectByExample")
    public List<ImgInfo> selectByExample(){
        ImgInfoExample example = new ImgInfoExample() ;
        example.createCriteria().andRemarkEqualTo("知了") ;
        return imgInfoService.selectByExample(example);
    }
    // 修改
    @RequestMapping("/updateByPrimaryKeySelective")
    public int updateByPrimaryKeySelective(){
        ImgInfo record = new ImgInfo() ;
        record.setImgId(11);
        record.setRemark("知了一笑");
        return imgInfoService.updateByPrimaryKeySelective(record);
    }
    // 删除
    @RequestMapping("/deleteByPrimaryKey")
    public int deleteByPrimaryKey() {
        Integer imgId = 11 ;
        return imgInfoService.deleteByPrimaryKey(imgId);
    }
}
           

8、測試順序

http://localhost:8010/insert
http://localhost:8010/selectByExample
http://localhost:8010/updateByPrimaryKeySelective
http://localhost:8010/deleteByPrimaryKey
           

三、內建分頁插件

1、mybatis配置檔案

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <plugins>
        <!--mybatis分頁插件-->
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <property name="dialect" value="mysql"/>
        </plugin>
    </plugins>
</configuration>
           

2、分頁實作代碼

@Override
public PageInfo<ImgInfo> queryPage(int page,int pageSize) {
    PageHelper.startPage(page,pageSize) ;
    ImgInfoExample example = new ImgInfoExample() ;
    // 查詢條件
    example.createCriteria().andBEnableEqualTo("1").andShowStateEqualTo(1);
    // 排序條件
    example.setOrderByClause("create_date DESC,img_id ASC");
    List<ImgInfo> imgInfoList = imgInfoMapper.selectByExample(example) ;
    PageInfo<ImgInfo> pageInfo = new PageInfo<>(imgInfoList) ;
    return pageInfo ;
}
           

3、測試接口

http://localhost:8010/queryPage
           

四、源代碼位址

GitHub·位址
https://github.com/cicadasmile/spring-boot-base
GitEE·位址
https://gitee.com/cicadasmile/spring-boot-base
           
SpringBoot2.0 基礎案例(10):整合Mybatis架構,內建分頁助手插件

繼續閱讀