前提条件:已经集成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.BaseMapper
    mapper.not-empty=false
    mapper.identity=MYSQL
    #
    ##pagehelper
    pagehelper.helperDialect=mysql
    pagehelper.reasonable=true
    pagehelper.supportMethodsArguments=true
    pagehelper.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的更多相关文章

  1. Spring Boot集成Mybatis及通用Mapper

    集成Mybatis可以通过 mybatis-spring-boot-starter 实现. <!-- https://mvnrepository.com/artifact/org.mybatis ...

  2. Spring boot集成Mybatis-Plus,通用Mapper

    Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生.(摘自mybatis-plus官网)Mybatis虽然已 ...

  3. spring boot集成pagehelper(两种方式)

    当spring boot集成好mybatis时候需要进行分页,我们首先添加maven支持 <dependency> <groupId>com.github.pagehelper ...

  4. Spring Boot 集成 PageHelper

    配置一:在 [pom.xml] 文件中引入依赖 <!-- mybatis的分页插件 --> <dependency> <groupId>com.github.pag ...

  5. spring boot集成MyBatis 通用Mapper 使用总结

    spring boot集成MyBatis 通用Mapper 使用总结 2019年 参考资料: Spring boot集成 MyBatis 通用Mapper SpringBoot框架之通用mapper插 ...

  6. Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件

    上一篇文章,写了如何搭建一个简单的Spring boot项目,本篇是接着上一篇文章写得:Spring boot入门:快速搭建Spring boot项目(一),主要是spring boot集成mybat ...

  7. 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法

    spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...

  8. spring boot集成mybatis(2) - 使用pagehelper实现分页

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  9. Spring Boot集成MyBatis开发Web项目

    1.Maven构建Spring Boot 创建Maven Web工程,引入spring-boot-starter-parent依赖 <project xmlns="http://mav ...

随机推荐

  1. jzoj4724

    DJL为了避免成为一只咸鱼,来找czgj学习Fibonacci数列. 通过czgj的谆谆教导,DJL明白了Fibonacci数列是这样定义的: F(1)=1;F(2)=1;F(n)=F(n-1)+F( ...

  2. Mac OSX sublime text2 各种快捷键

    Mac 快捷键 https://support.apple.com/zh-cn/HT201236 Preferences -> Key Bindings - User [ { "key ...

  3. setInterval传递参数

    参照:https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout 平时我们使用定时器的时 ...

  4. webpack快速入门——实战技巧:webpack优化黑技能

    1.抽离jquery,vue(多个第三方类库抽离) 修改入口文件(webpack.config.js中) entry: { entry: './src/entry.js', jquery:'jquer ...

  5. LINUX中如何查看某个端口是否被占用

    之前查询端口是否被占用一直搞不明白,问了好多人,终于搞懂了,现在总结下: 1.netstat  -anp  |grep   端口号 如下,我以3306为例,netstat  -anp  |grep   ...

  6. JS-DOM Element方法和属性

    JS-DOM Element方法和属性 S-DOM Element方法和属性一,获取html元素1.getElementByID(id)通过对元素的ID访问,这是DOM一个基础的访问页面元素的方法.e ...

  7. php 类继承

    %token T_EXTENDS "extends (T_EXTENDS)" unticked_class_declaration_statement: class_entry_t ...

  8. centos 7 初始化脚本

    #!/bin/bash # 时间: 2018-11-21 # 作者: HuYuan # 描述: CentOS 7 初始化脚本 # 加载配置文件 if [ -n "${1}" ];t ...

  9. javascript数据结构与算法--二叉树遍历(后序)

    javascript数据结构与算法--二叉树遍历(后序) 后序遍历先访问叶子节点,从左子树到右子树,再到根节点. /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * * * */ ...

  10. Java中equals,hashcode

         在Java语言中,Object对象中包含一个equals和hashCode方法,其中hashCode方法是由JVM本地代码(native code)实现的,返回值是一个有符号的32位整数,对 ...