SpringBoot2.0 基礎案例(10):整合Mybatis框架,集成分頁助手插件

1、Mybatis框架

一、mybatis簡介

MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎全部的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可使用簡單的 XML 或註解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)爲數據庫中的記錄。php

二、mybatis特色

1)sql語句與代碼分離,存放於xml配置文件中,方便管理
2)用邏輯標籤控制動態SQL的拼接,靈活方便
3)查詢的結果集與java對象自動映射
4)編寫原生態SQL,接近JDBC
5)簡單的持久化框架,框架不臃腫簡單易學
複製代碼

三、適用場景

MyBatis專一於SQL自己,是一個足夠靈活的DAO層解決方案。 對性能的要求很高,或者需求變化較多的項目,MyBatis將是不錯的選擇。java

2、與SpringBoot2.0整合

一、項目結構圖

採用druid鏈接池,該鏈接池。

二、核心依賴

<!-- 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>
複製代碼

三、核心配置

mybatis:
  # mybatis配置文件所在路徑
  config-location: classpath:mybatis.cfg.xml
  type-aliases-package: com.boot.mybatis.entity
  # mapper映射文件
  mapper-locations: classpath:mapper/*.xml
複製代碼

四、逆向工程生成的文件

這裏就不貼代碼了。

五、編寫基礎測試接口

// 增長
int insert(ImgInfo record);
// 組合查詢
List<ImgInfo> selectByExample(ImgInfoExample example);
// 修改
int updateByPrimaryKeySelective(ImgInfo record);
// 刪除
int deleteByPrimaryKey(Integer imgId);
複製代碼

六、編寫接口實現

@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);
    }
}
複製代碼

七、控制層測試類

@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);
    }
}
複製代碼

八、測試順序

http://localhost:8010/insert
http://localhost:8010/selectByExample
http://localhost:8010/updateByPrimaryKeySelective
http://localhost:8010/deleteByPrimaryKey
複製代碼

3、集成分頁插件

一、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>
複製代碼

二、分頁實現代碼

@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 ;
}
複製代碼

三、測試接口

http://localhost:8010/queryPage
複製代碼

4、源代碼地址

GitHub地址:知了一笑
https://github.com/cicadasmile/spring-boot-base
碼雲地址:知了一笑
https://gitee.com/cicadasmile/spring-boot-base
複製代碼

相關文章
相關標籤/搜索