利用MyBatis生成器自動生成實體類、DAO接口和Mapping映射文件。
mysql-connector-java-5.1.6-bin.jar mysql驅動包
mybatis-generator-core-1.3.5.jar 自動生成器包
maven 配置mybatis-generator插件
一、pom.xml 兩處配置
(1)
(2)
二、創建 generatorConfig.xml
配置如下:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE generatorConfiguration 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
5
6 <generatorConfiguration>
7 <!--導入屬性配置-->
8 <properties resource="datasource.properties"></properties>
9
10 <!--指定特定數據庫的jdbc驅動jar包的位置-->
11 <classPathEntry location="${db.driverLocation}"/>
12
13 <context id="default" targetRuntime="MyBatis3">
14
15 <!-- optional,旨在創建class時,對注釋進行控制 -->
16 <commentGenerator>
17 <property name="suppressDate" value="true"/>
18 <!-- 是否去除自動生成的注釋 true:是 : false:否 -->
19 <property name="suppressAllComments" value="true"/>
20 </commentGenerator>
21
22 <!--jdbc的數據庫連接 -->
23 <jdbcConnection 24 driverClass="${db.driverClassName}"
25 connectionURL="${db.url}"
26 userId="${db.username}"
27 password="${db.password}">
28 </jdbcConnection>
29
30
31 <!-- 非必需,類型處理器,在數據庫類型和java類型之間的轉換控制-->
32 <javaTypeResolver>
33 <property name="forceBigDecimals" value="false"/>
34 </javaTypeResolver>
35
36 <!-- 生成模型的包名和位置-->
37 <!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類 38 targetPackage 指定生成的model生成所在的包名 39 targetProject 指定在該項目下所在的路徑 40 -->
41 <!--<javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java">-->
42 <javaModelGenerator targetPackage="com.mmall.pojo" targetProject="./src/main/java">
43 <!-- 是否允許子包,即targetPackage.schemaName.tableName -->
44 <property name="enableSubPackages" value="false"/>
45 <!-- 是否對model添加 構造函數 -->
46 <property name="constructorBased" value="true"/>
47 <!-- 是否對類CHAR類型的列的數據進行trim操作 (去空)-->
48 <property name="trimStrings" value="true"/>
49 <!-- 建立的Model對象是否 不可改變 即生成的Model對象不會有 setter方法,只有構造方法 -->
50 <property name="immutable" value="false"/>
51 </javaModelGenerator>
52
53 <!--mapper映射文件生成所在的目錄 為每一個數據庫的表生成對應的SqlMap文件 -->
54 <!--<sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources">-->
55 <sqlMapGenerator targetPackage="mappers" targetProject="./src/main/resources">
56 <property name="enableSubPackages" value="false"/>
57 </sqlMapGenerator>
58
59 <!-- 客戶端代碼,生成易於使用的針對Model對象和XML配置文件 的代碼 60 type="ANNOTATEDMAPPER",生成Java Model 和基於注解的Mapper對象 61 type="MIXEDMAPPER",生成基於注解的Java Model 和相應的Mapper對象 62 type="XMLMAPPER",生成SQLMap XML文件和獨立的Mapper接口 63 -->
64
65 <!-- targetPackage:mapper接口dao生成的位置 -->
66 <!--<javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java">-->
67 <javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject="./src/main/java">
68 <!-- enableSubPackages:是否讓schema作為包的后綴 -->
69 <property name="enableSubPackages" value="false" />
70 </javaClientGenerator>
71
72 <!-- 要生成的表 tableName是數據庫中的表名或視圖名 domainObjectName是實體類名 -->
73 <table tableName="mmall_shipping" domainObjectName="Shipping" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
74 <table tableName="mmall_product" domainObjectName="Product" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
75 <!-- 數據庫中該字段的類型是 txt ,不同版本生成對應字體類的屬性類型可能不同,因此指定轉換類型 -->
76 <columnOverride column="detail" jdbcType="VARCHAR" />
77 <columnOverride column="sub_images" jdbcType="VARCHAR" />
78 </table>
79 <table tableName="mmall_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
80
81 <!-- mybatis插件的搭建 -->
82 </context>
83 </generatorConfiguration>
屬性配置文件如下:
#MySQL的JDBC驅動包,用JDBC連接MySQL數據庫時必須使用該jar包 db.driverLocation=mysql-connector-java-5.1.6-bin.jar db.driverClassName=com.mysql.jdbc.Driver #db.url=jdbc:mysql://localhost:3306/mmall?characterEncoding=utf-8
db.url=jdbc:mysql://localhost:3306/mmall?characterEncoding=utf-8
db.username=root db.password=123456
三、當前項目結構
備注:雙擊 maven 配置的 mybatis-generator 插件時,當前路徑為 pom.xml 的路徑,
此時 mysql-connector-java-5.1.6-bin.jar mysql驅動包與 pom.xml 在同一路徑。
路徑配置錯誤會報錯:
[ERROR]:Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project Mybatis-Generator: Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate failed: Cannot resolve classpath entry: mysql-connector-java-5.1.6-bin.jar -> [Help 1]
雙擊運行后自動生成的代碼結果:

1 package com.mmall.pojo; 2 3 import java.util.Date; 4 5 public class User { 6 private Integer id; 7 8 private String username; 9 10 private String password; 11 12 private String email; 13 14 private String phone; 15 16 private String question; 17 18 private String answer; 19 20 private Integer role; 21 22 private Date createTime; 23 24 private Date updateTime; 25 26 public User(Integer id, String username, String password, String email, String phone, String question, String answer, Integer role, Date createTime, Date updateTime) { 27 this.id = id; 28 this.username = username; 29 this.password = password; 30 this.email = email; 31 this.phone = phone; 32 this.question = question; 33 this.answer = answer; 34 this.role = role; 35 this.createTime = createTime; 36 this.updateTime = updateTime; 37 } 38 39 public User() { 40 super(); 41 } 42 43 public Integer getId() { 44 return id; 45 } 46 47 public void setId(Integer id) { 48 this.id = id; 49 } 50 51 public String getUsername() { 52 return username; 53 } 54 55 public void setUsername(String username) { 56 this.username = username == null ? null : username.trim(); 57 } 58 59 public String getPassword() { 60 return password; 61 } 62 63 public void setPassword(String password) { 64 this.password = password == null ? null : password.trim(); 65 } 66 67 public String getEmail() { 68 return email; 69 } 70 71 public void setEmail(String email) { 72 this.email = email == null ? null : email.trim(); 73 } 74 75 public String getPhone() { 76 return phone; 77 } 78 79 public void setPhone(String phone) { 80 this.phone = phone == null ? null : phone.trim(); 81 } 82 83 public String getQuestion() { 84 return question; 85 } 86 87 public void setQuestion(String question) { 88 this.question = question == null ? null : question.trim(); 89 } 90 91 public String getAnswer() { 92 return answer; 93 } 94 95 public void setAnswer(String answer) { 96 this.answer = answer == null ? null : answer.trim(); 97 } 98 99 public Integer getRole() { 100 return role; 101 } 102 103 public void setRole(Integer role) { 104 this.role = role; 105 } 106 107 public Date getCreateTime() { 108 return createTime; 109 } 110 111 public void setCreateTime(Date createTime) { 112 this.createTime = createTime; 113 } 114 115 public Date getUpdateTime() { 116 return updateTime; 117 } 118 119 public void setUpdateTime(Date updateTime) { 120 this.updateTime = updateTime; 121 } 122 }

1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 3 <mapper namespace="com.mmall.dao.UserMapper" > 4 <resultMap id="BaseResultMap" type="com.mmall.pojo.User" > 5 <constructor > 6 <idArg column="id" jdbcType="INTEGER" javaType="java.lang.Integer" /> 7 <arg column="username" jdbcType="VARCHAR" javaType="java.lang.String" /> 8 <arg column="password" jdbcType="VARCHAR" javaType="java.lang.String" /> 9 <arg column="email" jdbcType="VARCHAR" javaType="java.lang.String" /> 10 <arg column="phone" jdbcType="VARCHAR" javaType="java.lang.String" /> 11 <arg column="question" jdbcType="VARCHAR" javaType="java.lang.String" /> 12 <arg column="answer" jdbcType="VARCHAR" javaType="java.lang.String" /> 13 <arg column="role" jdbcType="INTEGER" javaType="java.lang.Integer" /> 14 <arg column="create_time" jdbcType="TIMESTAMP" javaType="java.util.Date" /> 15 <arg column="update_time" jdbcType="TIMESTAMP" javaType="java.util.Date" /> 16 </constructor> 17 </resultMap> 18 <sql id="Base_Column_List" > 19 id, username, password, email, phone, question, answer, role, create_time, update_time 20 </sql> 21 <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > 22 select 23 <include refid="Base_Column_List" /> 24 from mmall_user 25 where id = #{id,jdbcType=INTEGER} 26 </select> 27 <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" > 28 delete from mmall_user 29 where id = #{id,jdbcType=INTEGER} 30 </delete> 31 <insert id="insert" parameterType="com.mmall.pojo.User" > 32 insert into mmall_user (id, username, password, 33 email, phone, question, 34 answer, role, create_time, 35 update_time) 36 values (#{id,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, 37 #{email,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{question,jdbcType=VARCHAR}, 38 #{answer,jdbcType=VARCHAR}, #{role,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, 39 #{updateTime,jdbcType=TIMESTAMP}) 40 </insert> 41 <insert id="insertSelective" parameterType="com.mmall.pojo.User" > 42 insert into mmall_user 43 <trim prefix="(" suffix=")" suffixOverrides="," > 44 <if test="id != null" > 45 id, 46 </if> 47 <if test="username != null" > 48 username, 49 </if> 50 <if test="password != null" > 51 password, 52 </if> 53 <if test="email != null" > 54 email, 55 </if> 56 <if test="phone != null" > 57 phone, 58 </if> 59 <if test="question != null" > 60 question, 61 </if> 62 <if test="answer != null" > 63 answer, 64 </if> 65 <if test="role != null" > 66 role, 67 </if> 68 <if test="createTime != null" > 69 create_time, 70 </if> 71 <if test="updateTime != null" > 72 update_time, 73 </if> 74 </trim> 75 <trim prefix="values (" suffix=")" suffixOverrides="," > 76 <if test="id != null" > 77 #{id,jdbcType=INTEGER}, 78 </if> 79 <if test="username != null" > 80 #{username,jdbcType=VARCHAR}, 81 </if> 82 <if test="password != null" > 83 #{password,jdbcType=VARCHAR}, 84 </if> 85 <if test="email != null" > 86 #{email,jdbcType=VARCHAR}, 87 </if> 88 <if test="phone != null" > 89 #{phone,jdbcType=VARCHAR}, 90 </if> 91 <if test="question != null" > 92 #{question,jdbcType=VARCHAR}, 93 </if> 94 <if test="answer != null" > 95 #{answer,jdbcType=VARCHAR}, 96 </if> 97 <if test="role != null" > 98 #{role,jdbcType=INTEGER}, 99 </if> 100 <if test="createTime != null" > 101 #{createTime,jdbcType=TIMESTAMP}, 102 </if> 103 <if test="updateTime != null" > 104 #{updateTime,jdbcType=TIMESTAMP}, 105 </if> 106 </trim> 107 </insert> 108 <update id="updateByPrimaryKeySelective" parameterType="com.mmall.pojo.User" > 109 update mmall_user 110 <set > 111 <if test="username != null" > 112 username = #{username,jdbcType=VARCHAR}, 113 </if> 114 <if test="password != null" > 115 password = #{password,jdbcType=VARCHAR}, 116 </if> 117 <if test="email != null" > 118 email = #{email,jdbcType=VARCHAR}, 119 </if> 120 <if test="phone != null" > 121 phone = #{phone,jdbcType=VARCHAR}, 122 </if> 123 <if test="question != null" > 124 question = #{question,jdbcType=VARCHAR}, 125 </if> 126 <if test="answer != null" > 127 answer = #{answer,jdbcType=VARCHAR}, 128 </if> 129 <if test="role != null" > 130 role = #{role,jdbcType=INTEGER}, 131 </if> 132 <if test="createTime != null" > 133 create_time = #{createTime,jdbcType=TIMESTAMP}, 134 </if> 135 <if test="updateTime != null" > 136 update_time = #{updateTime,jdbcType=TIMESTAMP}, 137 </if> 138 </set> 139 where id = #{id,jdbcType=INTEGER} 140 </update> 141 <update id="updateByPrimaryKey" parameterType="com.mmall.pojo.User" > 142 update mmall_user 143 set username = #{username,jdbcType=VARCHAR}, 144 password = #{password,jdbcType=VARCHAR}, 145 email = #{email,jdbcType=VARCHAR}, 146 phone = #{phone,jdbcType=VARCHAR}, 147 question = #{question,jdbcType=VARCHAR}, 148 answer = #{answer,jdbcType=VARCHAR}, 149 role = #{role,jdbcType=INTEGER}, 150 create_time = #{createTime,jdbcType=TIMESTAMP}, 151 update_time = #{updateTime,jdbcType=TIMESTAMP} 152 where id = #{id,jdbcType=INTEGER} 153 </update> 154 </mapper>
五、換一種路徑進行自動生成代碼