zoukankan      html  css  js  c++  java
  • SpringBoot+Mybatis+MySql 自动生成代码 自动分页

    一、配置文件

    <!-- 通用mapper -->
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-spring-boot-starter</artifactId>
                <version>1.1.5</version>
            </dependency>
            <!-- pagehelper 分页插件 -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.2.5</version>
            </dependency>
    <!-- 自动生成代码 -->
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.5</version>
                    <dependencies>
                        <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>5.1.34</version>
                        </dependency>
                        <dependency>
                            <groupId>tk.mybatis</groupId>
                            <artifactId>mapper</artifactId>
                            <version>3.4.4</version>
                        </dependency>
                    </dependencies>
                    <executions>
                        <execution>
                            <id>Generate MyBatis Artifacts</id>
                            <phase>package</phase>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <!--允许移动生成的文件 -->
                        <verbose>true</verbose>
                        <!-- 是否覆盖 -->
                        <overwrite>true</overwrite>
                        <!-- 自动生成的配置 -->
                        <configurationFile>src/main/resources/mybatis-generator.xml</configurationFile>
                    </configuration>
                </plugin>
    spring:
      profiles:
        active: dev
    
    logging:
      config: classpath:xml/logback-boot.xml
    
    mybatis:
      # type-aliases扫描路径
      type-aliases-package: com.czhappy.wanmathapi.entity
      # mapper xml实现扫描路径
      mapper-locations: classpath:mapper/*.xml
      property:
        order: BEFORE
    
    #mappers 多个接口时逗号隔开
    mapper:
      mappers: com.czhappy.wanmathapi.config.MyMapper
      not-empty: false
      identity: mysql
    
    #pagehelper分页配置 第二种和第三种不需要 重点讲的第一种需要
    pagehelper:
      helperDialect: mysql
      reasonable: false
      supportMethodsArguments: true
      params: count=countSql

    二、Dao配置

    自定义MyMapper,作为dao的父类,此文件不要和其他dao文件放一起,防止扫描时有影响,单独建个文件夹。

    package com.czhappy.wanmathapi.config;
    
    import tk.mybatis.mapper.common.Mapper;
    import tk.mybatis.mapper.common.MySqlMapper;
    
    public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {
    
    }

    三、service配置

    package com.czhappy.wanmathapi.service;
    
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public interface IService<T> {
    
        List<T> selectAll();
    
        T selectByKey(Object key);
    
        int save(T entity);
    
        int delete(Object key);
    
        int updateAll(T entity);
    
        int updateNotNull(T entity);
    
        List<T> selectByExample(Object example);
    }
    package com.czhappy.wanmathapi.service.impl;
    
    import com.czhappy.wanmathapi.service.IService;
    import org.springframework.beans.factory.annotation.Autowired;
    import tk.mybatis.mapper.common.Mapper;
    
    import java.util.List;
    
    public abstract class BaseService<T> implements IService<T> {
    
        @Autowired
        protected Mapper<T> mapper;
    
        public Mapper<T> getMapper() {
            return mapper;
        }
    
        @Override
        public List<T> selectAll() {
            //说明:查询所有数据
            return mapper.selectAll();
        }
    
        @Override
        public T selectByKey(Object key) {
            //说明:根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号
            return mapper.selectByPrimaryKey(key);
        }
    
        @Override
        public int save(T entity) {
            //说明:保存一个实体,null的属性也会保存,不会使用数据库默认值
            return mapper.insert(entity);
        }
    
        @Override
        public int delete(Object key) {
            //说明:根据主键字段进行删除,方法参数必须包含完整的主键属性
            return mapper.deleteByPrimaryKey(key);
        }
    
        @Override
        public int updateAll(T entity) {
            //说明:根据主键更新实体全部字段,null值会被更新
            return mapper.updateByPrimaryKey(entity);
        }
    
        @Override
        public int updateNotNull(T entity) {
            //根据主键更新属性不为null的值
            return mapper.updateByPrimaryKeySelective(entity);
        }
    
        @Override
        public List<T> selectByExample(Object example) {
            //说明:根据Example条件进行查询
            //重点:这个查询支持通过Example类指定查询列,通过selectProperties方法指定查询列
            return mapper.selectByExample(example);
        }
    }

    四、自动生成代码mybatis-generator.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="com.czhappy.wanmathapi.config.MyMapper"/>
                <!--caseSensitive默认false,当数据库表名区分大小写时,可以将该属性设置为true-->
                <property name="caseSensitive" value="false"/>
            </plugin>
    
            <!-- 阻止生成自动注释 -->
            <commentGenerator>
                <property name="javaFileEncoding" value="UTF-8"/>
                <property name="suppressDate" value="true"/>
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
    
            <!--数据库链接地址账号密码-->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/wanmath"
                            userId="root" password="root">
            </jdbcConnection>
    
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
            <!--生成Model类存放位置-->
            <javaModelGenerator targetPackage="com.czhappy.wanmathapi.entity" targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
    
            <!--生成映射文件存放位置-->
            <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
    
            <!--生成Dao类存放位置-->
            <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
                    type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
                    type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口 -->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.czhappy.wanmathapi.mapper" targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
    
            <!--生成对应表及类名去掉Mybatis Generator生成的一堆 example-->
            <table tableName="sys_dict" domainObjectName="SysDict" enableCountByExample="false" enableUpdateByExample="false"
                   enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
                <generatedKey column="id" sqlStatement="mysql" identity="true"/>
            </table>
        </context>
    </generatorConfiguration>

    五、目录结构

    双击生成实体类、mapper、dao相关代码:

  • 相关阅读:
    Vue生命周期
    脚本生命周期
    音频
    光照系统
    InstantOC(对象渲染---游戏优化)
    kafka单机环境配置以及基本操作
    mysql 锁机制
    java.math.BigDecimal类multiply的使用
    去掉返回的json中特殊字符
    TheadLocal与synchronized
  • 原文地址:https://www.cnblogs.com/chenzheng8975/p/10972060.html
Copyright © 2011-2022 走看看