美文网首页
spring-boot-mybatis-generator-pa

spring-boot-mybatis-generator-pa

作者: Shawn_Shawn | 来源:发表于2020-08-30 18:52 被阅读0次

Spring-boot-mybatis-generator-page

Spring-boot-mybatis-generator

with java api

  1. 在src/main/resources目录下创建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="MyBatis3">
        <plugin type="org.mybatis.generator.plugins.FluentBuilderMethodsPlugin"/>
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
        <plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"/>
    
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
          connectionURL="jdbc:mysql://127.0.0.1:3306/spring-boot-demo?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;autoReconnect=true&amp;failOverReadOnly=false&amp;serverTimezone=GMT%2B8&amp;nullCatalogMeansCurrent=true"
          userId="root"
          password="Gepoint">
        </jdbcConnection>
    
        <javaModelGenerator targetPackage="com.shawn.spring.boot.mybatis.entity"
          targetProject="./src/main/java">
          <property name="enableSubPackages" value="true"/>
          <property name="trimStrings" value="true"/>
        </javaModelGenerator>
    
        <sqlMapGenerator targetPackage="com.shawn.spring.boot.mybatis.mapper"
          targetProject="./src/main/resources/mapper">
          <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
    
        <javaClientGenerator type="MIXEDMAPPER"
          targetPackage="com.shawn.spring.boot.mybatis.mapper"
          targetProject="./src/main/java">
          <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
    
        <table tableName="t_menu" domainObjectName="Menu">
          <generatedKey column="menu_id" sqlStatement="SELECT LAST_INSERT_ID()" identity="true"/>
        </table>
    
        <table tableName="t_user" domainObjectName="User">
          <generatedKey column="user_id" sqlStatement="SELECT LAST_INSERT_ID()" identity="true"/>
        </table>
    
        <table tableName="t_role" domainObjectName="Role">
          <generatedKey column="role_id" sqlStatement="SELECT LAST_INSERT_ID()" identity="true"/>
        </table>
      </context>
    </generatorConfiguration>
    
  2. pom.xml

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.0.0</version>
    </dependency>
    
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.3.7</version>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.13</version>
    </dependency>
    
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    
  3. java code

    List<String> warnings = new ArrayList<>();
    ConfigurationParser cp = new ConfigurationParser(warnings);
    Configuration config = cp.parseConfiguration(
        this.getClass().getResourceAsStream("/generatorConfig.xml"));
    // 是否覆盖
    DefaultShellCallback callback = new DefaultShellCallback(true);
    MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
    myBatisGenerator.generate(null);
    

with maven plugin

  1. 在src/main/resources目录下创建generatorConfig.xml(同上)

  2. pom.xml

    <dependencies>
      <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
      </dependency>
      <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
      </dependency>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
      </dependency>
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
      </dependency>
    </dependencies>
    
    <build>
      <plugins>
        <plugin>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-maven-plugin</artifactId>
          <version>1.3.7</version>
          <executions>
            <execution>
                <!-- plugin name -->
              <id>mybatis-generator</id>
              <goals>
                  <!-- 指令 -->
                <goal>generate</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <overwrite>true</overwrite>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>8.0.13</version>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </build>
    
  3. 执行Maven指令

    mvn [plugin-name]:[goal-name]
    mvn mybatis-generator:generate
    

注意点:

  1. 如果使用的是mysql-connector-java的版本是8以上,generatorConfig.xml里的jdbc.url需要加上参数nullCatalogMeansCurrent=true,不加上的话会识别不了表的主键。这样就不会生成selectByPrimaryKey这样的方法。

  2. 生成的mapper类,不会带上

    @Mapper
    @Repository
    

    这两个注解,建议加上

  3. <generatedKey column="user_id" sqlStatement="SELECT LAST_INSERT_ID()" identity="true"/>其中sqlStatement的配置可以参考Mybatis的官方文档

mybatis官网

Spring-boot-mybatis-pageHelper

  1. pom.xml

      <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
      </dependency>
    
  2. application.yaml

    spring.datasource.url: jdbc:mysql://127.0.0.1:3306/spring-boot-demo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=GMT%2B8
    spring.datasource.username: root
    spring.datasource.password: 11111
    spring.datasource.driver-class-name: com.mysql.cj.jdbc.Driver
    
    mybatis.configuration.map-underscore-to-camel-case: true
    mybatis.mapper-locations: classpath:mapper/**/*.xml
    mybatis.type-aliases-package: com.shawn.spring.boot.mybatis.entity
    mybatis.type-handlers-package: com.shawn.spring.boot.mybatis.handle
    
    pagehelper.offset-as-page-num: true
    pagehelper.reasonable: true
    pagehelper.page-size-zero: true
    pagehelper.support-methods-arguments: true
    
  3. mapper

    @Select("select * from t_user order by user_id")
    @ResultMap("com.shawn.spring.boot.mybatis.mapper.UserMapper.BaseResultMap")
    List<User> selectAll();
    
    @Select("select * from t_user order by user_id")
    @ResultMap("com.shawn.spring.boot.mybatis.mapper.UserMapper.BaseResultMap")
    List<User> selectWithRowBounds(RowBounds rowBounds);
    
    @Select("select * from t_user order by user_id")
    @ResultMap("com.shawn.spring.boot.mybatis.mapper.UserMapper.BaseResultMap")
    List<User> selectWithParams(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize);
    
  4. service

      @Override
      public PageInfo<User> findWithPageHelper(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<User> userList = userMapper.selectAll();
        PageInfo<User> pageInfo = new PageInfo(userList);
        return pageInfo;
      }
    
      @Override
      public PageInfo<User> findWithRowBounds(int pageNum, int pageSize) {
        List<User> users = userMapper.selectWithRowBounds(new RowBounds(pageNum, pageSize));
        PageInfo<User> pageInfo = new PageInfo(users);
        return pageInfo;
      }
    
      @Override
      public PageInfo<User> findWithParams(int pageNum, int pageSize) {
        List<User> users = userMapper.selectWithParams(pageNum, pageSize);
        PageInfo<User> pageInfo = new PageInfo(users);
        return pageInfo;
      }
    
  5. test case

    public void testPageQuery() {
      PageInfo<User> withPageHelper = userService.findWithPageHelper(1, 10);
      log.info("withPageHelper: {}", withPageHelper);
    
      PageInfo<User> withRowBounds = userService.findWithRowBounds(1, 10);
      log.info("withRowBounds: {}", withRowBounds);
    
      PageInfo<User> withParams = userService.findWithParams(1, 10);
      log.info("withParams: {}", withParams);
    }
    

相关文章

网友评论

      本文标题:spring-boot-mybatis-generator-pa

      本文链接:https://www.haomeiwen.com/subject/zxbesktx.html