【spring-boot】mybatis-generator 使用入门
初始化项目
- com.example.mybatisgeneratordemo
最终的文件目录结构
配置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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>mybatis-generator-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>mybatis-generator-demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.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> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </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.7</version> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.15</version> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.7</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/generatorConfig.xml</configurationFile> </configuration> </plugin> </plugins> </build> </project>
配置appliaction.yml
server: port: 8051 servlet: context-path: /springboot mybatis: # 对应实体类的包名 type-aliases-package: com.komiles.study.domain mapper-locations: classpath:mybatis/mapper/*.xml # config-location: classpath:mybatis/mybatis-config.xml spring: datasource: url: jdbc:mysql://127.0.0.1:3306/komo?characterEncoding=utf-8 username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver
配置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"/>--> <!--defaultModelType="flat" 大数据字段,不分表 --> <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat"> <property name="autoDelimitKeywords" value="true" /> <property name="beginningDelimiter" value="`" /> <property name="endingDelimiter" value="`" /> <property name="javaFileEncoding" value="utf-8" /> <plugin type="org.mybatis.generator.plugins.SerializablePlugin" /> <plugin type="org.mybatis.generator.plugins.ToStringPlugin" /> <!-- 注释 --> <commentGenerator > <property name="suppressAllComments" value="true"/><!-- 是否取消注释 --> <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳--> </commentGenerator> <!--数据库链接地址账号密码--> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/komo?characterEncoding=utf-8&nullCatalogMeansCurrent=true" userId="root" password="123456"> </jdbcConnection> <!-- 类型转换 --> <javaTypeResolver> <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) --> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!--生成Model类存放位置--> <javaModelGenerator targetPackage="com.example.mybatisgeneratordemo.domain" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成mapxml文件 --> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources/mybatis" > <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- 生成mapxml对应client,也就是接口dao --> <javaClientGenerator targetPackage="com.example.mybatisgeneratordemo.mapper" targetProject="src/main/java" type="XMLMAPPER" > <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- <table tableName="user_info" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true">--> <!-- <generatedKey column="id" sqlStatement="Mysql" identity="true" />--> <!-- </table>--> <table tableName="t_user" domainObjectName="User"> <generatedKey column="id" sqlStatement="Mysql" identity="true" /> </table> </context> </generatorConfiguration>
mybatis-generator 自动生成文件
service层
我们需要做的是 写service层逻辑
UserService.java
package com.example.mybatisgeneratordemo.service; import com.example.mybatisgeneratordemo.domain.User; /** * @author komiles@163.com * @date 2020-03-22 23:05 */ public interface UserService { User getUser(Integer id); }
UserServiceImpl.java
package com.example.mybatisgeneratordemo.service.impl; import com.example.mybatisgeneratordemo.domain.User; import com.example.mybatisgeneratordemo.mapper.UserMapper; import com.example.mybatisgeneratordemo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * @author komiles@163.com * @date 2020-03-22 22:58 */ @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User getUser(Integer id) { return userMapper.selectByPrimaryKey(id); } }
Controller 层
UserController.java
package com.example.mybatisgeneratordemo.controller; import com.example.mybatisgeneratordemo.domain.User; import com.example.mybatisgeneratordemo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * @author komiles@163.com * @date 2020-03-22 23:08 */ @RequestMapping("/test") @RestController public class UserController { @Autowired private UserService userService; @GetMapping("/userInfo") public User getUserInfo(@RequestParam("user_id") Integer id) { System.out.println(id); return userService.getUser(id); } }
如果无法加载
需要在启动文件上添加@MapperScan注解
访问地址
地址:http://127.0.0.1:8051/springboot/test/userInfo?user_id=1
展示效果:
项目demo地址:https://github.com/KoMiles/spring-example/tree/master/mybatis-demo
千里之行,始于足下。改变现在,就是改变未来。改变未来,从现在开始。