springboot 整合 MyBatis 使用generator自动生成代码
目录结构:
application.properties
server.port=8080 spring.datasource.name=mysql_test spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #druid相关配置 #监控统计拦截的filters spring.datasource.druid.filters=stat spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver spring.datasource.druid.url=jdbc:mysql://192.168.3.41:3306/naxiaoxin-saladb?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true spring.datasource.druid.username=root spring.datasource.druid.password=abcd-1234 spring.datasource.druid.initial-size=1 spring.datasource.druid.min-idle=1 spring.datasource.druid.max-active=20 spring.datasource.druid.max-wait=60000 spring.datasource.druid.time-between-eviction-runs-millis=60000 spring.datasource.druid.min-evictable-idle-time-millis=300000 spring.datasource.druid.validation-query=select 'x' spring.datasource.druid.test-while-idle=true spring.datasource.druid.test-on-borrow=false spring.datasource.druid.test-on-return=false spring.datasource.druid.pool-prepared-statements=false spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20 mybatis.mapper-locations=classpath:mapper/*.xml
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> <properties resource="application.properties" /> <classPathEntry location="C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\6.0.6\mysql-connector-java-6.0.6.jar" /> <context id="Tables" targetRuntime="MyBatis3"> <!-- 注释 --> <commentGenerator> <!-- 是否生成注释代时间戳 --> <property name="suppressDate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!-- JDBC连接 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://192.168.3.41:3306/naxiaoxin-saladb?useSSL=false&nullNamePatternMatchesAll=true" userId="root" password="abcd-1234"> </jdbcConnection> <!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制--> <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --> <javaTypeResolver> <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) --> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 生成实体类地址 --> <javaModelGenerator targetPackage="com.demo_mybatis.model" targetProject="src/main/java"> <!-- 从数据库返回的值被清理前后的空格 --> <property name="trimStrings" value="true" /> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </javaModelGenerator> <!-- 生成mapper xml文件 --> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- 生成mapper xml对应Client--> <javaClientGenerator targetPackage="com.demo_mybatis.test.dao" targetProject="src/main/java" type="XMLMAPPER"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 配置表信息 --> <!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample 是否生成 example类 --> <table schema="naxiaoxin-saladb" tableName="product_info" domainObjectName="ProductInfo" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false"> </table> </context> </generatorConfiguration>
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.demo_mybatis</groupId> <artifactId>test</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>test</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-joda</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-parameter-names</artifactId> </dependency> <!-- 分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency> <!-- alibaba的druid数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.9</version> </dependency> <!--代码自动生成插件--> <!--使用完必须注释掉下面这个插件--> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.6</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <configurationFile>src/main/resources/generatorConfig.xml</configurationFile> <!--此处是配置文件的位置--> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> </plugin> </plugins> </build> </project>
运行:
或者
然后补齐service层和controller层
package com.demo_mybatis.controller; import com.demo_mybatis.model.ProductInfo; import com.demo_mybatis.service.ProductInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class ProductInfoController { @Autowired private ProductInfoService productInfoService; @ResponseBody @PostMapping(value = "/addProductInfo") public int addProductInfo(ProductInfo productInfo){ /*ProductInfo productInfo = new ProductInfo(); productInfo.setProductId("1"); productInfo.setProductName("张亮麻辣烫20元套餐"); productInfo.setProductPrice(20.00); productInfo.setProductStock(20); productInfo.setProductDescription("张亮麻辣烫20元套餐张亮麻辣烫20元套餐张亮麻辣烫20元套餐张亮麻辣烫20元套餐张亮麻辣烫20元套餐张亮麻辣烫20元套餐张亮麻辣烫20元套餐"); productInfo.setProoductIcon("1111"); productInfo.setCategoryType(1);*/ return productInfoService.insert(productInfo); } }
package com.demo_mybatis.service.impl; import com.demo_mybatis.mapper.ProductInfoMapper; import com.demo_mybatis.model.ProductInfo; import com.demo_mybatis.service.ProductInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class ProductInfoServiceImpl implements ProductInfoService { @Autowired private ProductInfoMapper productInfoMapper; @Override public int insert(ProductInfo record) { return productInfoMapper.insert(record); } @Override public int insertSelective(ProductInfo record) { return 0; } }
package com.demo_mybatis.service; import com.demo_mybatis.model.ProductInfo; public interface ProductInfoService { int insert(ProductInfo record); int insertSelective(ProductInfo record); }
运行: