IDEA——mybatis-generator插件自动生成实体代码(Maven)

利用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 }

User

  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>

UserMapper.xml

五、换一种路径进行自动生成代码

原文地址:https://www.cnblogs.com/SacredOdysseyHD/p/8460644.html

时间: 2024-10-10 19:43:28

IDEA——mybatis-generator插件自动生成实体代码(Maven)的相关文章

记录下 mybatis.generator 插件自动生成mapper+entity+mapper.xml 少走点坑

Demo  springBoot+Mybatis+oracle 1.创建项目  ...... 2. 配置 generator 文件 在resource 下创建 generatorConfig.xml 文件 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator C

springmvc学习笔记--mybatis--使用插件自动生成实体和mapper

由于表对象在开发过程中会增删字段,有时候需要重新生成实体和对应的mapper,这时候可以通过mybatis的插件的生成. 优点是快速简洁,缺点同样很明显:覆盖.因此,通常是在第一次搭建框架的时候使用,因为开发过程中实体的字段会被修改,如添加注解validator.format等.所以架构师学会用包装对象?包装对象怎么实现在原始表的属性的控制呢,比如日期格式化,比如校验. 1.首先,在pom中依赖插件: 1 <!-- Mybatis generator代码生成插件 配置 --> 2 <pl

JAVA入门[7]-Mybatis generator(MBG)自动生成mybatis代码

一.新建测试项目 新建Maven项目MybatisDemo2,修改pom.xml引入依赖.dependencies在上节基础上新增 <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> </dependency>

mybatis逆向工程--自动生成实体代码(mybatis-generator)

随便找个目录,  添加文件, 如图 主要是两个jar包,  generator的下载路径:   https://github.com/mybatis/generator/releases   驱动包随便找了 接下来看下配置文件, 直接贴出代码 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD

利用mybatis generator插件反向生成Dao、Mapper.xml、pojo(通过maven)

直接进入主题,由于项目选择的利用maven构建,所以选择了利用maven的生成方式.(还有一种可自行百度) 一.在pom.xml中添加插件 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configur

使用mybatis插件自动生成实体(pojo)类

首先下载我已经搭好的工程,下载下来按照下面的操作配置和运行下就能轻松搞定! 地址:http://pan.baidu.com/s/1jIhJFTG 这是一个maven搭建的工程,将项目导入到工程中,导入完之后目录: 先看第1步: 打开generatorConfig.xml文件可以看到里面有好多配置信息,为了简单快速上手,只需要配置这两个地方即可: 其中table可以有多个,多配置几个可以满足一个数据库中多个表同时生成对应的实体类和Mapper文件. 配置已经完毕,其他的配置信息可以等会回头自己慢慢

使用MyBatis Generator自动生成实体、mapper和dao层

通过MyBatis Generator可以自动生成实体.mapper和dao层,记录一下怎么用的. 主要步骤: 关于mybatis从数据库反向生成实体.DAO.mapper: 参考文章:http://www.cnblogs.com/wangkeai/p/6934683.html第一种方式:main方法运行(推荐) 1.在pom.xml中加入插件依赖: 2.写mbgConfiguration.xml文件,jdbc.properties文件 3.写/SSM/src/main/java/main/Ge

Mybatis自动生成实体类、dao接口和mapping映射文件

由于Mybatis是一种半自动的ORM框架,它的工作主要是配置mapping映射文件,为了减少手动书写映射文件,可以利用mybatis生成器,自动生成实体类.dao接口以及它的映射文件,然后直接拷贝到工程中稍微修改就可以直接使用了. 生成器目录如下: 首先进入lib文件夹中,该目录如下: (图上文件下载地址:http://download.csdn.net/detail/qiwei31229/9790909) 主要修改generatorConfig.xml <?xml version="1

Mybatis分页-利用Mybatis Generator插件生成基于数据库方言的分页语句,统计记录总数 (转)

众所周知,Mybatis本身没有提供基于数据库方言的分页功能,而是基于JDBC的游标分页,很容易出现性能问题.网上有很多分页的解决方案,不外乎是基于Mybatis本机的插件机制,通过拦截Sql做分页.但是在像Oracle这样的数据库上,拦截器生成的Sql语句没有变量绑定,而且每次语句的都要去拦截,感觉有点浪费性能. Mybatis Generator是Mybatis的代码生成工具,可以生成大部分的查询语句. 本文提供的分页解决方案是新增Mybatis Generator插件,在用Mybatis