根据数据中的表一一去写实体类,费时耗力,可以根据mybatis自动生成代码.
优点:不用自己去写实体类以及mapper中通用的增删改查等。
缺点:更改一个实体类属性时,需要自己再在mapper.xml中去修改,太麻烦。
(注:还有一种方式是直接继承Mapper即可,里面也包含了通用的方法,映射文件mapper.xml都不用写。如果涉及到不是通用的还是需要自己来写的。)
效果图:
mysql数据库表:
项目生成后的结构目录:
上代码:(有2种运行方式。直接运行即可生成代码)
pom.xml的配置:
<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>0t_mybatis_generator_test</groupId> <artifactId>0_syb_mybatis</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency> </dependencies> </project>
需要配置的文件mybatis-generator.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> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--数据库链接URL,用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/syb_test?characterEncoding=utf-8" userId="root" password="root"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 设置Java类生成的位置 --> <javaModelGenerator targetPackage="com.syb.model" targetProject=".\src\main\java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- 生成映射文件的包名和位置--> <sqlMapGenerator targetPackage="com.syb.dao" targetProject=".\src\main\resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- 生成DAO的包名和位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.syb.mapper" targetProject=".\src\main\resources"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名--> <table tableName="employee"></table> <table tableName="sys_user"></table> </context> </generatorConfiguration>
运行类方式一:
import org.mybatis.generator.api.ShellRunner; /** * 孙大圣 * @author sunyoubing * * tcl */ public class App { //该配置文件放在src\\main\\resources\\该路径下即可 public static void main(String[] args) { args = new String[] { "-configfile", "src\\main\\resources\\mybatis-generator.xml", "-overwrite" }; ShellRunner.main(args); } }
运行类方式二:
import java.io.File; import java.util.ArrayList; import java.util.List; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.internal.DefaultShellCallback; /** * 孙大圣 * @author sun * * tcl */ public class MBG { public static void main(String[] args) throws Exception { List<String> warnings = new ArrayList<String>(); boolean overwrite = true; File configFile = new File("mybatis-generator.xml");//直接放在文件下面,与pom.xml同级 ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); } }