spring-boot整合PageHelper和通用Mapper

來源:互聯網
上載者:User

標籤:generate   config   cat   pass   selectall   gen   XML   條件   id自增   

前提條件:已經整合mybatis

代碼產生步驟:

  1. 添加依賴
    <dependency>    <groupId>tk.mybatis</groupId>    <artifactId>mapper-spring-boot-starter</artifactId>    <version>1.1.4</version></dependency><dependency>    <groupId>org.mybatis.generator</groupId>    <artifactId>mybatis-generator-core</artifactId>    <version>1.3.6</version></dependency>
  2. 建立一個擁有main方法的類,代碼如下
    package com.ghaien.generator;import org.mybatis.generator.api.MyBatisGenerator;import org.mybatis.generator.config.Configuration;import org.mybatis.generator.config.xml.ConfigurationParser;import org.mybatis.generator.internal.DefaultShellCallback;import sun.nio.cs.Surrogate.Generator;import java.util.ArrayList;import java.util.List;public class GeneratorMain {    /**     * 代碼產生器     * @param args     * @throws Exception     */    public static void main(String[] args) throws Exception {        List<String> warnings = new ArrayList<>();        boolean overwrite = true;        ConfigurationParser cp = new ConfigurationParser(warnings);        Configuration config = cp.parseConfiguration(                  Generator.class.getResourceAsStream("/generator/generatorConfig.xml"));        DefaultShellCallback callback = new DefaultShellCallback(overwrite);        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);        myBatisGenerator.generate(null);    }}
  3. 在上面代碼中對應的目錄下建立generatorConfig.xml設定檔
    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration>    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>            <!-- caseSensitive預設false,當資料庫表名區分大小寫時,可以將該屬性設定為true -->            <property name="caseSensitive" value="true"/>        </plugin>        <jdbcConnection driverClass="com.mysql.jdbc.Driver"                        connectionURL="jdbc:mysql://localhost:3306/test"                        userId="root"                        password="1234">        </jdbcConnection>        <!--產生的實體類的儲存路徑和包名-->        <javaModelGenerator targetPackage="com.ghaien.dao.pojo.vo" 
    targetProject="E:\document\IdeaProjects\spring-boot-demo\src\main\java"/> <!--產生的*Mapper.xml檔案的儲存位置--> <sqlMapGenerator targetPackage="mapper"
    targetProject="E:\document\IdeaProjects\spring-boot-demo\src\main\resources"/> <!--產生的*Mapper.java檔案的儲存位置和包名--> <javaClientGenerator targetPackage="com.ghaien.dao.mapper"
    targetProject="E:\document\IdeaProjects\spring-boot-demo\src\main\java" type="XMLMAPPER" /> <!--對應資料庫中表名(可以使用"%" 對應所有表)--> <table tableName="user" > <!--該表有一個id自增的主鍵,在產生實體類的時候會根據該配置產生相應的註解--> <generatedKey column="id" sqlStatement="Mysql" identity="true"/> </table> </context></generatorConfiguration>

    以上配置可根據具體的需求進行配置

  4. 執行main方法

整合步驟:

  1. 添加依賴
    <dependency>    <groupId>tk.mybatis</groupId>    <artifactId>mapper-spring-boot-starter</artifactId>    <version>1.1.4</version></dependency><dependency>    <groupId>com.github.pagehelper</groupId>    <artifactId>pagehelper-spring-boot-starter</artifactId>    <version>1.2.1</version></dependency>
  2. application.properties中增加如下配置
    ##mapper##mappers 多個介面時逗號隔開mapper.mappers=com.ghaien.utils.mapper.BaseMappermapper.not-empty=falsemapper.identity=MYSQL###pagehelperpagehelper.helperDialect=mysqlpagehelper.reasonable=truepagehelper.supportMethodsArguments=truepagehelper.params=count=countSql
  3. 將產生的*Mapper.xml檔案移動到application.properties中mybatis.mapperLocations對用的目錄下,隨意移動產生的實體類位置
  4. 建立BaseMapper(命名隨意)介面,位置跟設定檔中的mapper.mappers對應,代碼如下
    package com.ghaien.utils.mapper;import tk.mybatis.mapper.common.Mapper;import tk.mybatis.mapper.common.MySqlMapper;public interface BaseMapper<T> extends Mapper<T>, MySqlMapper<T> {}

    修改產生的*Mapper.java檔案,使其繼承BaseMapper,並移動到@MapperScan能掃描到的路徑下,代碼如下

    package com.ghaien.dao.mapper;import com.ghaien.dao.pojo.vo.User;import org.apache.ibatis.annotations.Param;import tk.mybatis.mapper.common.BaseMapper;public interface UserMapper extends BaseMapper<User> {    /**     * 測試UserMapper.xml檔案路徑是否正確     * @param id     * @return     */    User queryById(@Param("id") Long id);}

    注意:BaseMapper不能被@MapperScan掃描到

  5. 測試是否成功整合,代碼如下
    package com.ghaien.dao.mapper;import com.ghaien.dao.pojo.vo.User;import com.github.pagehelper.Page;import com.github.pagehelper.PageHelper;import org.junit.Test;import org.junit.runner.RunWith;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import java.util.List;/** * Created by ghaien on 2018/1/29. */@SpringBootTest@RunWith(SpringRunner.class)public class UserMapperTest {    @Autowired    private UserMapper userMapper;    private Logger log = LoggerFactory.getLogger(this.getClass());    @Test    public void testQueryByPage() {//        PageHelper.startPage(2, 1);//        List<User> users = userMapper.selectAll();//        for (User user : users) {//            log.info("userName = " + user.getUserName());//        }        Page<User> page = PageHelper.startPage(2, 1).doSelectPage(() -> {            userMapper.selectAll();        });        for (User user : page) {            log.info("userName = " + user.getUserName());        }    }}

    以上兩種方法最後輸出的結果是一致的,若想查看sql語句只需在設定檔中增加如下配置即可

    logging.level.com.ghaien.dao=debug

完整代碼

 

spring-boot整合PageHelper和通用Mapper

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.