自动生成mybatis xml文件和mapper接口、实体类
1.导入依赖
目录结构
导入依赖
<dependencies>
<!--引入springcloud的euekea server依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--MyBatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--MySQL-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<!--指定下载源和使用springcloud的版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<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>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</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>
<!-- 自动生成的配置文件路径。启动插件时,插件会根据这里配置的路径去找到generatorConfig.xml配置文件,
根据配置文件里的配置,去自动生成Mapper接口(可以理解为Dao层)、实体类、Mapper.xml文件
-->
<configurationFile>src/main/resources/mybatis/generatorConfig.xml</configurationFile>
</configuration>
</plugin>
</plugins>
</build>
2.配置文件
- application.yml
spring:
application:
name: eureka-service1
datasource:
driver: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8
username: root
password: root
mybatis:
#别名
type-aliases-package: com.yun.dao
#指定映射文件位置
mapper-locations: classpath:mybatis/mapper/*.xml
- generatorConfig.xml
generatorConfig.xml,要放在pom.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>
<!--加载配置文件,为下面读取数据库信息准备-->
<!-- <classPathEntry
location="D:\workspace\hello\target\mysql-connector-java-5.1.30.jar" />-->
<!--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>
<!--数据库链接地址账号密码,这里是读取application.properties配置文件的。
如果你的项目配置文件用的是yml格式的,则如下写法是读取不到,需手动填写完整
-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8"
userId="root"
password="root">
</jdbcConnection>
<!-- 类型转换 -->
<javaTypeResolver>
<!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成Model类存放位置,即实体类存放路径 -->
<javaModelGenerator targetPackage="com.yun.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成mapper.xml文件,dao.xml存放路径 -->
<sqlMapGenerator targetPackage="mybatis.mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- 生成mapper.xml对应得接口,也就是dao层 -->
<javaClientGenerator targetPackage="com.yun.dao" targetProject="src/main/java" type="XMLMAPPER">
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!--以下就是需自动生成mapper.xml文件等表,配置哪些表,就自动生成哪些表那些文件。-->
<table tableName="students" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true">
<generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table>
</context>
</generatorConfiguration>
3.运行插件自动生成代码
4.添加注解
- 启动类
@SpringBootApplication
//代表自己是一个服务提供方
@EnableDiscoveryClient
//启动时扫描指定包下的接口
@MapperScan(basePackages = "com.yun.dao")
public class EurekaServiceApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServiceApplication.class,args);
System.out.println("启动服务提供方");
}
}
- mapper
@Mapper
public interface StudentsMapper {
int deleteByPrimaryKey(Long id);
int insert(Students record);
Students selectByPrimaryKey(Long id);
List<Students> selectAll();
int updateByPrimaryKey(Students record);
}
- service
service层不能自动生成要手动编写,记得加上@Service注解
@Service
public class StudentsServiceImpl implements StudentsService {
@Resource
private StudentsMapper studentsMapper;
@Override
public int deleteByPrimaryKey(Long id) {
return studentsMapper.deleteByPrimaryKey(id);
}
@Override
public int insert(Students record) {
return studentsMapper.insert(record);
}
@Override
public Students selectByPrimaryKey(Long id) {
return studentsMapper.selectByPrimaryKey(id);
}
@Override
public List<Students> selectAll() {
return studentsMapper.selectAll();
}
@Override
public int updateByPrimaryKey(Students record) {
return studentsMapper.updateByPrimaryKey(record);
}
}
- controller
提供一个对外可以访问的接口
@RestController
@RequestMapping("/Hello")
public class Controller {
@Resource
private StudentsService studentsService;
@RequestMapping("/getStudent")
public String getStudent(){
Students students = studentsService.selectByPrimaryKey(1L);
String name = students.getName();
return name;
}
}
5.演示
数据库
访问接口