eclipse生成mybatis的逆向工程-mybatis代码自动生成
首先,工作中一直在使用命令方式的mybatis的代码自动生成,今天把自己的笔记本直接搞一个在eclipse中生成的逆向代码生成工程,方便自己在家学习使用,在搞这个工程的过程中由于自己搞了一套环境,所i出现了一些问题,最后解决了,在这里首先写出来,给自己提个醒
出的问题主要是在下载代码生成的jar时和逆向生成代码时出的问题
本博主因为自己在linux centos上搞了一套私服,打算以后一直采用这个,所以在jar时因为忘了这个事,所以jar没有下载出来,以后一定要先把私服打开,连上网,同时关闭防火墙
第二,就是逆向代码生成报错,可以先编译一下,在生成,如果还不行就去认真检查generatorConfig.xml是否有配错的地方。
接着我们上代码
我们创建mybatis-generator的springboot工程,这里面可以删除逆向工程不需要的运行主程序和测试主程序以及测试资源包等结构i,然后就是配置了
pom文件
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zxy</groupId> <artifactId>mybatis-generator</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>mybatis-generator</name> <description>Forward project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 数据库==================================以下部分为生成代码需要的===================================================== --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <!-- 自动生成代码依赖 --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </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.5</version> <!-- 配置依赖的数据库 --> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency> </dependencies> <configuration> <!-- 配置generator.xml文件的路径 --> <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile> <overwrite>true</overwrite> </configuration> </plugin> </plugins> </build> </project>
generatorConfig.xml放在src/main/resources下
<?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="test" targetRuntime="MyBatis3"> <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"></plugin> <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin> <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin> <commentGenerator> <!-- 这个元素用来去除指定生成的注释中是否包含生成的日期 false:表示保护 --> <!-- 如果生成日期,会造成即使修改一个字段,整个实体类所有属性都会发生变化,不利于版本控制,所以设置为true --> <property name="suppressDate" value="true" /> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator> <!--数据库链接URL,用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/ssm" userId="root" password="123456"> </jdbcConnection> <javaTypeResolver> <!-- This property is used to specify whether MyBatis Generator should force the use of java.math.BigDecimal for DECIMAL and NUMERIC fields, --> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 生成模型的包名和位置 --> <javaModelGenerator targetPackage="com.zxy.dealer.entity" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- 生成映射文件的包名和位置 --> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- 生成DAO的包名和位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.zxy.dealer.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 要生成哪些表 --> <table tableName="goods" domainObjectName="Goods" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> </context> </generatorConfiguration>
然后就可以运行了,运行命令:mybatis-generator:generate
生成后的目录结构
生成的代码如下:
entity
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.zxy.dealer.entity; 2 3 import java.io.Serializable; 4 import java.util.Date; 5 6 public class Goods implements Serializable { 7 private Integer id; 8 9 private String goodsname; 10 11 private Integer billstatus; 12 13 private Integer goodsdistric; 14 15 private Double goodsprice; 16 17 private Integer goodscount; 18 19 private Date creationtime; 20 21 private static final long serialVersionUID = 1L; 22 23 public Integer getId() { 24 return id; 25 } 26 27 public void setId(Integer id) { 28 this.id = id; 29 } 30 31 public String getGoodsname() { 32 return goodsname; 33 } 34 35 public void setGoodsname(String goodsname) { 36 this.goodsname = goodsname == null ? null : goodsname.trim(); 37 } 38 39 public Integer getBillstatus() { 40 return billstatus; 41 } 42 43 public void setBillstatus(Integer billstatus) { 44 this.billstatus = billstatus; 45 } 46 47 public Integer getGoodsdistric() { 48 return goodsdistric; 49 } 50 51 public void setGoodsdistric(Integer goodsdistric) { 52 this.goodsdistric = goodsdistric; 53 } 54 55 public Double getGoodsprice() { 56 return goodsprice; 57 } 58 59 public void setGoodsprice(Double goodsprice) { 60 this.goodsprice = goodsprice; 61 } 62 63 public Integer getGoodscount() { 64 return goodscount; 65 } 66 67 public void setGoodscount(Integer goodscount) { 68 this.goodscount = goodscount; 69 } 70 71 public Date getCreationtime() { 72 return creationtime; 73 } 74 75 public void setCreationtime(Date creationtime) { 76 this.creationtime = creationtime; 77 } 78 79 @Override 80 public boolean equals(Object that) { 81 if (this == that) { 82 return true; 83 } 84 if (that == null) { 85 return false; 86 } 87 if (getClass() != that.getClass()) { 88 return false; 89 } 90 Goods other = (Goods) that; 91 return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) 92 && (this.getGoodsname() == null ? other.getGoodsname() == null : this.getGoodsname().equals(other.getGoodsname())) 93 && (this.getBillstatus() == null ? other.getBillstatus() == null : this.getBillstatus().equals(other.getBillstatus())) 94 && (this.getGoodsdistric() == null ? other.getGoodsdistric() == null : this.getGoodsdistric().equals(other.getGoodsdistric())) 95 && (this.getGoodsprice() == null ? other.getGoodsprice() == null : this.getGoodsprice().equals(other.getGoodsprice())) 96 && (this.getGoodscount() == null ? other.getGoodscount() == null : this.getGoodscount().equals(other.getGoodscount())) 97 && (this.getCreationtime() == null ? other.getCreationtime() == null : this.getCreationtime().equals(other.getCreationtime())); 98 } 99 100 @Override 101 public int hashCode() { 102 final int prime = 31; 103 int result = 1; 104 result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); 105 result = prime * result + ((getGoodsname() == null) ? 0 : getGoodsname().hashCode()); 106 result = prime * result + ((getBillstatus() == null) ? 0 : getBillstatus().hashCode()); 107 result = prime * result + ((getGoodsdistric() == null) ? 0 : getGoodsdistric().hashCode()); 108 result = prime * result + ((getGoodsprice() == null) ? 0 : getGoodsprice().hashCode()); 109 result = prime * result + ((getGoodscount() == null) ? 0 : getGoodscount().hashCode()); 110 result = prime * result + ((getCreationtime() == null) ? 0 : getCreationtime().hashCode()); 111 return result; 112 } 113 114 @Override 115 public String toString() { 116 StringBuilder sb = new StringBuilder(); 117 sb.append(getClass().getSimpleName()); 118 sb.append(" ["); 119 sb.append("Hash = ").append(hashCode()); 120 sb.append(", id=").append(id); 121 sb.append(", goodsname=").append(goodsname); 122 sb.append(", billstatus=").append(billstatus); 123 sb.append(", goodsdistric=").append(goodsdistric); 124 sb.append(", goodsprice=").append(goodsprice); 125 sb.append(", goodscount=").append(goodscount); 126 sb.append(", creationtime=").append(creationtime); 127 sb.append(", serialVersionUID=").append(serialVersionUID); 128 sb.append("]"); 129 return sb.toString(); 130 } 131 }
dao
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.zxy.dealer.dao; 2 3 import com.zxy.dealer.entity.Goods; 4 5 public interface GoodsMapper { 6 int deleteByPrimaryKey(Integer id); 7 8 int insert(Goods record); 9 10 int insertSelective(Goods record); 11 12 Goods selectByPrimaryKey(Integer id); 13 14 int updateByPrimaryKeySelective(Goods record); 15 16 int updateByPrimaryKey(Goods record); 17 }
mapper
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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.zxy.dealer.dao.GoodsMapper"> <resultMap id="BaseResultMap" type="com.zxy.dealer.entity.Goods"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="goodsName" jdbcType="VARCHAR" property="goodsname" /> <result column="billStatus" jdbcType="INTEGER" property="billstatus" /> <result column="goodsDistric" jdbcType="INTEGER" property="goodsdistric" /> <result column="goodsPrice" jdbcType="DOUBLE" property="goodsprice" /> <result column="goodsCount" jdbcType="INTEGER" property="goodscount" /> <result column="creationTime" jdbcType="DATE" property="creationtime" /> </resultMap> <sql id="Base_Column_List"> id, goodsName, billStatus, goodsDistric, goodsPrice, goodsCount, creationTime </sql> <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from goods where id = #{id,jdbcType=INTEGER} </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer"> delete from goods where id = #{id,jdbcType=INTEGER} </delete> <insert id="insert" parameterType="com.zxy.dealer.entity.Goods"> insert into goods (id, goodsName, billStatus, goodsDistric, goodsPrice, goodsCount, creationTime) values (#{id,jdbcType=INTEGER}, #{goodsname,jdbcType=VARCHAR}, #{billstatus,jdbcType=INTEGER}, #{goodsdistric,jdbcType=INTEGER}, #{goodsprice,jdbcType=DOUBLE}, #{goodscount,jdbcType=INTEGER}, #{creationtime,jdbcType=DATE}) </insert> <insert id="insertSelective" parameterType="com.zxy.dealer.entity.Goods"> insert into goods <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="goodsname != null"> goodsName, </if> <if test="billstatus != null"> billStatus, </if> <if test="goodsdistric != null"> goodsDistric, </if> <if test="goodsprice != null"> goodsPrice, </if> <if test="goodscount != null"> goodsCount, </if> <if test="creationtime != null"> creationTime, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=INTEGER}, </if> <if test="goodsname != null"> #{goodsname,jdbcType=VARCHAR}, </if> <if test="billstatus != null"> #{billstatus,jdbcType=INTEGER}, </if> <if test="goodsdistric != null"> #{goodsdistric,jdbcType=INTEGER}, </if> <if test="goodsprice != null"> #{goodsprice,jdbcType=DOUBLE}, </if> <if test="goodscount != null"> #{goodscount,jdbcType=INTEGER}, </if> <if test="creationtime != null"> #{creationtime,jdbcType=DATE}, </if> </trim> </insert> <update id="updateByPrimaryKeySelective" parameterType="com.zxy.dealer.entity.Goods"> update goods <set> <if test="goodsname != null"> goodsName = #{goodsname,jdbcType=VARCHAR}, </if> <if test="billstatus != null"> billStatus = #{billstatus,jdbcType=INTEGER}, </if> <if test="goodsdistric != null"> goodsDistric = #{goodsdistric,jdbcType=INTEGER}, </if> <if test="goodsprice != null"> goodsPrice = #{goodsprice,jdbcType=DOUBLE}, </if> <if test="goodscount != null"> goodsCount = #{goodscount,jdbcType=INTEGER}, </if> <if test="creationtime != null"> creationTime = #{creationtime,jdbcType=DATE}, </if> </set> where id = #{id,jdbcType=INTEGER} </update> <update id="updateByPrimaryKey" parameterType="com.zxy.dealer.entity.Goods"> update goods set goodsName = #{goodsname,jdbcType=VARCHAR}, billStatus = #{billstatus,jdbcType=INTEGER}, goodsDistric = #{goodsdistric,jdbcType=INTEGER}, goodsPrice = #{goodsprice,jdbcType=DOUBLE}, goodsCount = #{goodscount,jdbcType=INTEGER}, creationTime = #{creationtime,jdbcType=DATE} where id = #{id,jdbcType=INTEGER} </update> <resultMap id="BaseResultMap" type="com.zxy.dealer.entity.Goods"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="goodsName" jdbcType="VARCHAR" property="goodsname" /> <result column="billStatus" jdbcType="INTEGER" property="billstatus" /> <result column="goodsDistric" jdbcType="INTEGER" property="goodsdistric" /> <result column="goodsPrice" jdbcType="DOUBLE" property="goodsprice" /> <result column="goodsCount" jdbcType="INTEGER" property="goodscount" /> <result column="creationTime" jdbcType="DATE" property="creationtime" /> </resultMap> <sql id="Base_Column_List"> id, goodsName, billStatus, goodsDistric, goodsPrice, goodsCount, creationTime </sql> <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from goods where id = #{id,jdbcType=INTEGER} </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer"> delete from goods where id = #{id,jdbcType=INTEGER} </delete> <insert id="insert" parameterType="com.zxy.dealer.entity.Goods"> insert into goods (id, goodsName, billStatus, goodsDistric, goodsPrice, goodsCount, creationTime) values (#{id,jdbcType=INTEGER}, #{goodsname,jdbcType=VARCHAR}, #{billstatus,jdbcType=INTEGER}, #{goodsdistric,jdbcType=INTEGER}, #{goodsprice,jdbcType=DOUBLE}, #{goodscount,jdbcType=INTEGER}, #{creationtime,jdbcType=DATE}) </insert> <insert id="insertSelective" parameterType="com.zxy.dealer.entity.Goods"> insert into goods <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="goodsname != null"> goodsName, </if> <if test="billstatus != null"> billStatus, </if> <if test="goodsdistric != null"> goodsDistric, </if> <if test="goodsprice != null"> goodsPrice, </if> <if test="goodscount != null"> goodsCount, </if> <if test="creationtime != null"> creationTime, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=INTEGER}, </if> <if test="goodsname != null"> #{goodsname,jdbcType=VARCHAR}, </if> <if test="billstatus != null"> #{billstatus,jdbcType=INTEGER}, </if> <if test="goodsdistric != null"> #{goodsdistric,jdbcType=INTEGER}, </if> <if test="goodsprice != null"> #{goodsprice,jdbcType=DOUBLE}, </if> <if test="goodscount != null"> #{goodscount,jdbcType=INTEGER}, </if> <if test="creationtime != null"> #{creationtime,jdbcType=DATE}, </if> </trim> </insert> <update id="updateByPrimaryKeySelective" parameterType="com.zxy.dealer.entity.Goods"> update goods <set> <if test="goodsname != null"> goodsName = #{goodsname,jdbcType=VARCHAR}, </if> <if test="billstatus != null"> billStatus = #{billstatus,jdbcType=INTEGER}, </if> <if test="goodsdistric != null"> goodsDistric = #{goodsdistric,jdbcType=INTEGER}, </if> <if test="goodsprice != null"> goodsPrice = #{goodsprice,jdbcType=DOUBLE}, </if> <if test="goodscount != null"> goodsCount = #{goodscount,jdbcType=INTEGER}, </if> <if test="creationtime != null"> creationTime = #{creationtime,jdbcType=DATE}, </if> </set> where id = #{id,jdbcType=INTEGER} </update> <update id="updateByPrimaryKey" parameterType="com.zxy.dealer.entity.Goods"> update goods set goodsName = #{goodsname,jdbcType=VARCHAR}, billStatus = #{billstatus,jdbcType=INTEGER}, goodsDistric = #{goodsdistric,jdbcType=INTEGER}, goodsPrice = #{goodsprice,jdbcType=DOUBLE}, goodsCount = #{goodscount,jdbcType=INTEGER}, creationTime = #{creationtime,jdbcType=DATE} where id = #{id,jdbcType=INTEGER} </update> <resultMap id="BaseResultMap" type="com.zxy.dealer.entity.Goods"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="goodsName" jdbcType="VARCHAR" property="goodsname" /> <result column="billStatus" jdbcType="INTEGER" property="billstatus" /> <result column="goodsDistric" jdbcType="INTEGER" property="goodsdistric" /> <result column="goodsPrice" jdbcType="DOUBLE" property="goodsprice" /> <result column="goodsCount" jdbcType="INTEGER" property="goodscount" /> <result column="creationTime" jdbcType="DATE" property="creationtime" /> </resultMap> <sql id="Base_Column_List"> id, goodsName, billStatus, goodsDistric, goodsPrice, goodsCount, creationTime </sql> <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from goods where id = #{id,jdbcType=INTEGER} </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer"> delete from goods where id = #{id,jdbcType=INTEGER} </delete> <insert id="insert" parameterType="com.zxy.dealer.entity.Goods"> insert into goods (id, goodsName, billStatus, goodsDistric, goodsPrice, goodsCount, creationTime) values (#{id,jdbcType=INTEGER}, #{goodsname,jdbcType=VARCHAR}, #{billstatus,jdbcType=INTEGER}, #{goodsdistric,jdbcType=INTEGER}, #{goodsprice,jdbcType=DOUBLE}, #{goodscount,jdbcType=INTEGER}, #{creationtime,jdbcType=DATE}) </insert> <insert id="insertSelective" parameterType="com.zxy.dealer.entity.Goods"> insert into goods <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="goodsname != null"> goodsName, </if> <if test="billstatus != null"> billStatus, </if> <if test="goodsdistric != null"> goodsDistric, </if> <if test="goodsprice != null"> goodsPrice, </if> <if test="goodscount != null"> goodsCount, </if> <if test="creationtime != null"> creationTime, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=INTEGER}, </if> <if test="goodsname != null"> #{goodsname,jdbcType=VARCHAR}, </if> <if test="billstatus != null"> #{billstatus,jdbcType=INTEGER}, </if> <if test="goodsdistric != null"> #{goodsdistric,jdbcType=INTEGER}, </if> <if test="goodsprice != null"> #{goodsprice,jdbcType=DOUBLE}, </if> <if test="goodscount != null"> #{goodscount,jdbcType=INTEGER}, </if> <if test="creationtime != null"> #{creationtime,jdbcType=DATE}, </if> </trim> </insert> <update id="updateByPrimaryKeySelective" parameterType="com.zxy.dealer.entity.Goods"> update goods <set> <if test="goodsname != null"> goodsName = #{goodsname,jdbcType=VARCHAR}, </if> <if test="billstatus != null"> billStatus = #{billstatus,jdbcType=INTEGER}, </if> <if test="goodsdistric != null"> goodsDistric = #{goodsdistric,jdbcType=INTEGER}, </if> <if test="goodsprice != null"> goodsPrice = #{goodsprice,jdbcType=DOUBLE}, </if> <if test="goodscount != null"> goodsCount = #{goodscount,jdbcType=INTEGER}, </if> <if test="creationtime != null"> creationTime = #{creationtime,jdbcType=DATE}, </if> </set> where id = #{id,jdbcType=INTEGER} </update> <update id="updateByPrimaryKey" parameterType="com.zxy.dealer.entity.Goods"> update goods set goodsName = #{goodsname,jdbcType=VARCHAR}, billStatus = #{billstatus,jdbcType=INTEGER}, goodsDistric = #{goodsdistric,jdbcType=INTEGER}, goodsPrice = #{goodsprice,jdbcType=DOUBLE}, goodsCount = #{goodscount,jdbcType=INTEGER}, creationTime = #{creationtime,jdbcType=DATE} where id = #{id,jdbcType=INTEGER} </update> </mapper>
主要生成了根据主键查找、删除,查找全部及动态增改和非动态增改共7个方法,很好用!
本博主支持并坚持原创,本博客文章将以原创为主。