spring boot + mybatis plus 搭建

看了几位大佬的文章后,终于搭建spring boot + mybatis plus成功了,实现分页查询,代码自动生成,这里使用的数据库为mysql ,数据库连接池为druid

1.maven管理:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath/>
</parent>

<!-- 属性添加版本号 -->
<properties>
    <mybatis-plus-spring-boot-starter.version>2.2.0</mybatis-plus-spring-boot-starter.version>
    <mybatisplus.version>2.1.4</mybatisplus.version>
    <druid.version>1.0.2</druid.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- 数据库MySQL驱动依赖 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- Druid springBoot-starter依赖 -->
    <dependency>
        <groupId>com.github.drtrang</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>${druid.version}</version>
    </dependency>
    <!-- MyBatis Plus springBoot-starter依赖 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>${mybatis-plus-spring-boot-starter.version}</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>

    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>2.0</version>
        <scope>test</scope>
    </dependency>

</dependencies>

2.配置application.yml

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://改为自己数据库地址:3306/改为自己数据库名字?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
    username: 用户名
    password: 密码
    druid:
      # 初始化大小,最小,最大
      initial-size: 5
      min-idle: 5
      maxActive: 20
      # 配置获取连接等待超时的时间
      maxWait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: stat,wall
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      # 配置DruidStatFilter
      web-stat-filter:
        enabled: true
        url-pattern: "/*"
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
      # 配置DruidStatViewServlet
      stat-view-servlet:
        url-pattern: "/druid/*"
        # IP白名单(没有配置或者为空,则允许所有访问)
        allow: 127.0.0.1,192.168.122.140
        
        #  禁用HTML页面上的“Reset All”功能
        reset-enable: false
        # 登录名
        login-username: root
        # 登录密码
        login-password: 123456
mybatis-plus:
  mapper-locations: 改为mapper.xml的地址
  typeAliasesPackage: 改为实体类存放的地址
  global-config:
    id-type: 2
    field-strategy: 2
    db-column-underline: true
    refresh-mapper: true
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
server:
  port: 8080

3.代码生成器配置

可以试着运行junit,看代码生成的和预想的是否一样

public class CodeGenerator {
    public static final String DB_URL = "jdbc:mysql://192.168.122.140:3306/springboottest?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true";
    public static final String USER_NAME = "root";
    public static final String PASSWORD = "123456";
    public static final String DRIVER = "com.mysql.jdbc.Driver";
    public static final String AUTHOR = "j4ffee";
    //生成的文件输出到哪个目录
    public static final String OUTPUT_FILE = "D:\\codeGen";
    //包名,会按照com/example/demo这种形式生成类
    public static final String PACKAGE = "com.example.demo";
    //TODO 更多配置请参考http://mp.baomidou.com/#/generate-code

    public void generateByTables(boolean serviceNameStartWithI, String... tableNames) {
        GlobalConfig config = new GlobalConfig();
        config.setOpen(false).setBaseResultMap(true);
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL)
                .setUrl(DB_URL)
                .setUsername(USER_NAME)
                .setPassword(PASSWORD)
                .setDriverName(DRIVER);
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig
                .setCapitalMode(true)
                .setEntityLombokModel(false)
                .setDbColumnUnderline(true)
                .setNaming(NamingStrategy.underline_to_camel)
                .setInclude(tableNames);//修改替换成你需要的表名,多个表名传数组
        config.setActiveRecord(false)
                .setAuthor(AUTHOR)
                .setOutputDir(OUTPUT_FILE)
                .setFileOverride(true);
        if (!serviceNameStartWithI) {
            config.setServiceName("%sService");
        }
        new AutoGenerator().setGlobalConfig(config)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(
                        new PackageConfig()
                                .setParent(PACKAGE)
                                .setController("controller")
                                .setEntity("entity")
                ).execute();
    }



    @Test
    public void generateCode() {
        boolean serviceNameStartWithI = false;//user -> UserService, 设置成true: user -> IUserService
        generateByTables(serviceNameStartWithI, "order_details", "order_master", "product_category","product_info");
    }

}

4.尝试运行mybati plus自带的crud操作

到此步骤,基本整合已经完成,可以进行自带的crud操作,以selectById()为例,直接在controller层进行操作

spring boot + mybatis plus 搭建

在进行此项操作时,曾遇到一个错误,大致是运行到mapper层时找不到方法,解决方法:在entity打注解@TableName(),@TableId()

spring boot + mybatis plus 搭建

5.进行分页查询

以方法为getAllInfo()为例

5.1在mapper.xml写getAllInfo对应的select方法,像写普通的查询一样

spring boot + mybatis plus 搭建

5.2在mapper.xml对应的mapper类中写方法:

spring boot + mybatis plus 搭建

5.3在service和controller里面依次写入方法:

service:

spring boot + mybatis plus 搭建

controller:

spring boot + mybatis plus 搭建

至此,一个简单框架就算搭建完成了