写代码的时候新建了一张表,是不是觉得创建实体类以及映射文件贼鸡儿烦?

问题不大:有一个东西叫做Mybatis-generator
这玩意可以根据我们已经设计好的数据库表帮助我们自动生成实体类(pojo)、接口(dao)、映射文件(mapper),这样就可以避免每次使用表的时候手动创建一些类和映射文件,节约了大量的时间。
简单粗暴易上手,话不多少直接开搞。
首先创建一个maven项目,这一步我就不多说了,IDEA一站式操作,没啥好说的。
创建完项目,我们先创建一张表格备用sys_user 字段如下:

下面引入一下maven依赖:
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.3.9</version>
</dependency>
</dependencies>
</plugin>
下面创建我们核心的gengratorConfig.xml,文件的位置可以自己选择,但是务必要和maven里面configurationFile的路径一致。
可以自定义需要Pojo继承的实体类
/**
* create by c-pown on 2020-05-28
*/
public class BaseBean {
}
mapper接口继承自定义的BaseMapper
/**
* @desc 自己的mapper,可以继承mybatis一些实用接口
* @author c-pown
* @date 2020-05-29
*/
public interface MyMapper<T> {
//TODO
//FIXME 特别注意,该接口不能被扫描到,否则会出错
}
最重要的:
<?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-dev.properties"/>
<context id="MysqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<!-- mapper接口继承自定义的BaseMapper -->
<property name="mappers" value="com.example.demo.util.MyMapper"/>
</plugin>
<!--数据库连接信息-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test"
userId="root"
password="root">
</jdbcConnection>
<javaModelGenerator targetPackage="com.example.demo.model" targetProject="src/main/java">
<!-- 基类继承BaseBean -->
<property name="rootClass" value="com.example.demo.model.BaseBean"/>
</javaModelGenerator>
<!-- 对于生成的mapper所在目录 -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>
<!-- 配置mapper对应的java映射 -->
<javaClientGenerator targetPackage="com.example.demo.mapper" targetProject="src/main/java"
type="XMLMAPPER"/>
<table tableName="sys_user"></table>
</context>
</generatorConfiguration>
上面这些都配置完成以后,直接点击maven插件

看下结果:

成功了,看下文件:
package com.example.demo.mapper;
import com.example.demo.model.SysUser;
import com.example.demo.util.MyMapper;
public interface SysUserMapper extends MyMapper<SysUser> {
}
package com.example.demo.model;
import javax.persistence.*;
@Table(name = "sys_user")
public class SysUser extends BaseBean {
private String id;
private String username;
private String nickname;
private String password;
private Integer age;
private Integer sex;
private Integer job;
/**
* @return id
*/
public String getId() {
return id;
}
/**
* @param id
*/
public void setId(String id) {
this.id = id;
}
/**
* @return username
*/
public String getUsername() {
return username;
}
/**
* @param username
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return nickname
*/
public String getNickname() {
return nickname;
}
/**
* @param nickname
*/
public void setNickname(String nickname) {
this.nickname = nickname;
}
/**
* @return password
*/
public String getPassword() {
return password;
}
/**
* @param password
*/
public void setPassword(String password) {
this.password = password;
}
/**
* @return age
*/
public Integer getAge() {
return age;
}
/**
* @param age
*/
public void setAge(Integer age) {
this.age = age;
}
/**
* @return sex
*/
public Integer getSex() {
return sex;
}
/**
* @param sex
*/
public void setSex(Integer sex) {
this.sex = sex;
}
/**
* @return job
*/
public Integer getJob() {
return job;
}
/**
* @param job
*/
public void setJob(Integer job) {
this.job = job;
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.demo.mapper.SysUserMapper" >
<resultMap id="BaseResultMap" type="com.example.demo.model.SysUser" >
<!--
WARNING - @mbg.generated
-->
<result column="id" property="id" jdbcType="VARCHAR" />
<result column="username" property="username" jdbcType="VARCHAR" />
<result column="nickname" property="nickname" jdbcType="VARCHAR" />
<result column="password" property="password" jdbcType="VARCHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
<result column="sex" property="sex" jdbcType="INTEGER" />
<result column="job" property="job" jdbcType="INTEGER" />
</resultMap>
</mapper>
完美!

本文介绍如何使用MyBatis Generator插件,根据已设计的数据库表自动生成实体类(POJO)、接口(DAO)及映射文件(Mapper)。通过配置maven依赖和generatorConfig.xml文件,实现代码快速生成,提高开发效率。
246

被折叠的 条评论
为什么被折叠?



