zoukankan      html  css  js  c++  java
  • 使用generator自动生成mybatis model、mapper.xml、mapper等(转)

    原文链接:http://www.cnblogs.com/lichenwei/p/4145696.html

    Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件。

    1、相关文件

    关于Mybatis-Generator的下载可以到这个地址:https://github.com/mybatis/generator/releases

    由于我使用的是Mysql数据库,这里需要再准备一个连接mysql数据库的驱动jar包

    以下是相关文件截图:

    和Hibernate逆向生成一样,这里也需要一个配置文件:

    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 <generatorConfiguration>
     6     <!--数据库驱动-->
     7     <classPathEntry    location="mysql-connector-java-5.0.8-bin.jar"/>
     8     <context id="DB2Tables"    targetRuntime="MyBatis3">
     9         <commentGenerator>
    10             <property name="suppressDate" value="true"/>
    11             <property name="suppressAllComments" value="true"/>
    12         </commentGenerator>
    13         <!--数据库链接地址账号密码-->
    14         <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/mymessages" userId="root" password="root">
    15         </jdbcConnection>
    16         <javaTypeResolver>
    17             <property name="forceBigDecimals" value="false"/>
    18         </javaTypeResolver>
    19         <!--生成Model类存放位置-->
    20         <javaModelGenerator targetPackage="lcw.model" targetProject="src">
    21             <property name="enableSubPackages" value="true"/>
    22             <property name="trimStrings" value="true"/>
    23         </javaModelGenerator>
    24         <!--生成映射文件存放位置-->
    25         <sqlMapGenerator targetPackage="lcw.mapping" targetProject="src">
    26             <property name="enableSubPackages" value="true"/>
    27         </sqlMapGenerator>
    28         <!--生成Dao类存放位置-->
    29         <javaClientGenerator type="XMLMAPPER" targetPackage="lcw.dao" targetProject="src">
    30             <property name="enableSubPackages" value="true"/>
    31         </javaClientGenerator>
    32         <!--生成对应表及类名-->
    33         <table tableName="message" domainObjectName="Messgae" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
    34     </context>
    35 </generatorConfiguration>
    复制代码

    需要修改文件配置的地方我都已经把注释标注出来了,这里的相关路径(如数据库驱动包,生成对应的相关文件位置可以自定义)不能带有中文。

    上面配置文件中的:

    <table tableName="message" domainObjectName="Messgae" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>

    tableName和domainObjectName为必选项,分别代表数据库表名和生成的实体类名,其余的可以自定义去选择(一般情况下均为false)。

    生成语句文件:

    java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite

    2、使用方法

    在该目录按住Shift键,右键鼠标选择"在此处打开命令窗口",复制粘贴生成语句的文件代码即可。

    看下效果图:

    首先这个是我的数据库表

    生成相关代码:

    Message.java

    复制代码
     1 package lcw.model;
     2 
     3 public class Messgae {
     4     private Integer id;
     5 
     6     private String title;
     7 
     8     private String describe;
     9 
    10     private String content;
    11 
    12     public Integer getId() {
    13         return id;
    14     }
    15 
    16     public void setId(Integer id) {
    17         this.id = id;
    18     }
    19 
    20     public String getTitle() {
    21         return title;
    22     }
    23 
    24     public void setTitle(String title) {
    25         this.title = title == null ? null : title.trim();
    26     }
    27 
    28     public String getDescribe() {
    29         return describe;
    30     }
    31 
    32     public void setDescribe(String describe) {
    33         this.describe = describe == null ? null : describe.trim();
    34     }
    35 
    36     public String getContent() {
    37         return content;
    38     }
    39 
    40     public void setContent(String content) {
    41         this.content = content == null ? null : content.trim();
    42     }
    43 }
    复制代码

    MessgaeMapper.xml

    复制代码
     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="lcw.dao.MessgaeMapper" >
     4   <resultMap id="BaseResultMap" type="lcw.model.Messgae" >
     5     <id column="id" property="id" jdbcType="INTEGER" />
     6     <result column="title" property="title" jdbcType="VARCHAR" />
     7     <result column="describe" property="describe" jdbcType="VARCHAR" />
     8     <result column="content" property="content" jdbcType="VARCHAR" />
     9   </resultMap>
    10   <sql id="Base_Column_List" >
    11     id, title, describe, content
    12   </sql>
    13   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    14     select 
    15     <include refid="Base_Column_List" />
    16     from message
    17     where id = #{id,jdbcType=INTEGER}
    18   </select>
    19   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    20     delete from message
    21     where id = #{id,jdbcType=INTEGER}
    22   </delete>
    23   <insert id="insert" parameterType="lcw.model.Messgae" >
    24     insert into message (id, title, describe, 
    25       content)
    26     values (#{id,jdbcType=INTEGER}, #{title,jdbcType=VARCHAR}, #{describe,jdbcType=VARCHAR}, 
    27       #{content,jdbcType=VARCHAR})
    28   </insert>
    29   <insert id="insertSelective" parameterType="lcw.model.Messgae" >
    30     insert into message
    31     <trim prefix="(" suffix=")" suffixOverrides="," >
    32       <if test="id != null" >
    33         id,
    34       </if>
    35       <if test="title != null" >
    36         title,
    37       </if>
    38       <if test="describe != null" >
    39         describe,
    40       </if>
    41       <if test="content != null" >
    42         content,
    43       </if>
    44     </trim>
    45     <trim prefix="values (" suffix=")" suffixOverrides="," >
    46       <if test="id != null" >
    47         #{id,jdbcType=INTEGER},
    48       </if>
    49       <if test="title != null" >
    50         #{title,jdbcType=VARCHAR},
    51       </if>
    52       <if test="describe != null" >
    53         #{describe,jdbcType=VARCHAR},
    54       </if>
    55       <if test="content != null" >
    56         #{content,jdbcType=VARCHAR},
    57       </if>
    58     </trim>
    59   </insert>
    60   <update id="updateByPrimaryKeySelective" parameterType="lcw.model.Messgae" >
    61     update message
    62     <set >
    63       <if test="title != null" >
    64         title = #{title,jdbcType=VARCHAR},
    65       </if>
    66       <if test="describe != null" >
    67         describe = #{describe,jdbcType=VARCHAR},
    68       </if>
    69       <if test="content != null" >
    70         content = #{content,jdbcType=VARCHAR},
    71       </if>
    72     </set>
    73     where id = #{id,jdbcType=INTEGER}
    74   </update>
    75   <update id="updateByPrimaryKey" parameterType="lcw.model.Messgae" >
    76     update message
    77     set title = #{title,jdbcType=VARCHAR},
    78       describe = #{describe,jdbcType=VARCHAR},
    79       content = #{content,jdbcType=VARCHAR}
    80     where id = #{id,jdbcType=INTEGER}
    81   </update>
    82 </mapper>
    复制代码

    MessgaeMapper.java

    复制代码
     1 package lcw.dao;
     2 
     3 import lcw.model.Messgae;
     4 
     5 public interface MessgaeMapper {
     6     int deleteByPrimaryKey(Integer id);
     7 
     8     int insert(Messgae record);
     9 
    10     int insertSelective(Messgae record);
    11 
    12     Messgae selectByPrimaryKey(Integer id);
    13 
    14     int updateByPrimaryKeySelective(Messgae record);
    15 
    16     int updateByPrimaryKey(Messgae record);
    17 }
    复制代码
  • 相关阅读:
    HDU 1058 Humble Numbers
    HDU 1421 搬寝室
    HDU 1176 免费馅饼
    七种排序算法的实现和总结
    算法纲要
    UVa401 回文词
    UVa 10361 Automatic Poetry
    UVa 537 Artificial Intelligence?
    UVa 409 Excuses, Excuses!
    UVa 10878 Decode the tape
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/6118953.html
Copyright © 2011-2022 走看看