MyBatis逆向生成Java代码
简介
MyBatis是一个优秀的Java持久层框架,它提供了简单且强大的数据库访问方式。在开发过程中,我们通常需要编写大量的实体类、DAO接口和XML映射文件,这样的工作非常繁琐且容易出错。为了解决这个问题,MyBatis提供了逆向工程功能,可以根据数据库表结构自动生成Java代码,极大地提高了开发效率。
使用逆向工程生成Java代码
MyBatis逆向工程使用的是MyBatis Generator(简称MBG),它是一个独立的代码生成工具。下面将介绍如何使用MBG生成Java代码。
步骤一:创建MBG配置文件
首先,我们需要创建一个MBG配置文件,命名为generatorConfig.xml
,并放置在项目的根目录下。该配置文件用于指定数据库连接信息、生成的Java代码的包名和路径等。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC
"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"
<generatorConfiguration>
<context id="default" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis_example"
userId="root"
password="password">
</jdbcConnection>
<javaModelGenerator targetPackage="com.example.model"
targetProject="src/main/java">
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.example.mapper"
targetProject="src/main/resources">
</sqlMapGenerator>
<javaClientGenerator targetPackage="com.example.dao"
targetProject="src/main/java"
type="XMLMAPPER">
</javaClientGenerator>
<table tableName="user"></table>
</context>
</generatorConfiguration>
注意:在配置文件中需要根据实际情况修改数据库连接信息和生成代码的包路径。
步骤二:运行MBG
配置文件创建完毕后,我们需要运行MBG来生成Java代码。有以下几种方式可以运行MBG:
- 使用Maven插件:在项目的pom.xml文件中添加如下插件配置,并执行
mvn mybatis-generator:generate
命令。
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<configurationFile>generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
</build>
- 使用命令行:在项目的根目录下执行
java -jar mybatis-generator-core-x.x.x.jar -configfile generatorConfig.xml
命令。
运行MBG后,它将根据配置文件中的表名生成对应的实体类、DAO接口和XML映射文件,并自动放置在指定的包路径中。
代码示例
假设我们的数据库中有一个user
表,包含id
、username
和password
三个字段。使用MBG生成的Java代码如下:
User.java
package com.example.model;
public class User {
private Integer id;
private String username;
private String password;
// 省略getter和setter方法
}
UserDao.java
package com.example.dao;
import com.example.model.User;
import java.util.List;
public interface UserDao {
int deleteByPrimaryKey(Integer id);
int insert(User record);
int insertSelective(User record);
User selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
// 省略其他方法
}
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"
<mapper namespace="com.example.dao.UserDao">
<resultMap id="BaseResultMap" type="com.example.model.User">
<id column="id" property="id" jdbcType="INTEGER" />
<result column="username" property="username" jdbcType="VARCHAR