文档章节

mybatis-generator-core自动生成

c
 casiolr
发布于 2017/04/26 09:39
字数 1475
阅读 61
收藏 0

一:主要修改信息如下:

   1:将原有实体类生成的英文注释修改为数据库中的中文注释

   2:将原有生成的Dao接口和Mapper.xml文件后面的Mapper更改为Dao;如:UserMapper.java 修改为:UserDao.java;UserMapper.xml修改为UserDao.xml;

   3:生成的配置文件和Dao中去除insert方法和updateById方法,因为insertSelective和updateByPrimaryKeySelective完全可以满足我们的需求

   4:强制生成的所有文件编码为UTF-8

   5.为生成的Dao方法中添加中文注释

   6.将原有Example相关示例类替换为Criteria

   7.增加分页插件,自动生成分页SQL

<plugin type="org.mybatis.generator.plugins.MySqlPaginationPlugin">
            <!--可选属性:起始页记录limitStart,根据自己实际情况可以修改,默认为limitStart->
            <property name="limitStartName" value="limitStart"></property>
            <!--可选属性:结束记录limitSize,根据自己实际情况可以修改,默认为limitSize->
            <property name="limitSizeName" value="limitSize"></property>
</plugin>


  8.增加分页插件和BaseDao插件    

<plugin type="org.mybatis.generator.plugins.MyBaseMapperGeneratorPlugin" >
            <!--必选属性baseDao在你应用中的完全限定名 name:必须是baseDaoPath,value:是你BaseDao          在你项目中的完全限定名-->
            <property name="baseDaoPath" value="com.lht.bp.api.common.BaseDao"></property>
</plugin>


注:如果需要使用,将这两个配置到generatorConfig.xml中即可,可以参考源码中的generatorConfigA.xml文件;BaseDao文件不是自动生成的,需要手动将提供的BaseDao.java文件复制到自己对应的目录 BaseDao.java文件目录:org.mybatis.generator.codegen.mybatis3.javamapper.elements.BaseDao;

废话说了这么多该上示例代码了:

1.实体

package ibatisData;

/**
 * 
 * t_dict
 * 
 * @version 1.0 2017-04-16
 */
public class Dict {
    /**
     * 主键
     * t_dict.id
     */
    private String id;

    /**
     * 字典的Key
     * t_dict.dkey
     */
    private String dkey;


    /**
     * 主键<br>
     *
     * column:t_dict.id<br>
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * 主键<br>
     *
     * column:t_dict.id<br>
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 字典的Key<br>
     *
     * column:t_dict.dkey<br>
     * @return dkey
     */
    public String getDkey() {
        return dkey;
    }

    /**
     * 字典的Key<br>
     *
     * column:t_dict.dkey<br>
     * @param dkey
     */
    public void setDkey(String dkey) {
        this.dkey = dkey;
    }

}

 

2.Dao接口

BaseDao(所有Dao接口都继承该类):

package org.mybatis.generator.codegen.mybatis3.javamapper.elements;

import java.io.Serializable;
import java.util.List;

import org.apache.ibatis.annotations.Param;

/**
 * @author mybatis T表示与table表对应的实体类(Entity) E表示Entity对应的Param类 PK表示可能会用到主键
 *         (比如Integer等)
 * @param <T> 对应的实体
 * @param <E> 对应查询参数实体
 * @param <PK> 主键类型
 */
public interface BaseDao<T, E, PK extends Serializable> {
	int countByCriteria(E criteria);

	int deleteByCriteria(E criteria);

	int deleteByPrimaryKey(PK id);

	int insertSelective(T record);

	List<T> selectByCriteria(E criteria);

	T selectByPrimaryKey(PK id);

	int updateByCriteriaSelective(@Param("record") T record, @Param("param") E criteria);

	int updateByPrimaryKeySelective(T record);

}

DictDao: 

package ibatisData;

import com.lht.bp.api.common.BaseDao;
import ibatisData.Dict;
import ibatisData.DictCriteria;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface DictDao extends BaseDao<Dict, DictCriteria, String> {
}

3.XML映射文件

<?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="ibatisData.DictDao" >
  <resultMap id="BaseResultMap" type="ibatisData.Dict" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    <id column="id" property="id" jdbcType="VARCHAR" />
    <result column="dkey" property="dkey" jdbcType="VARCHAR" />
    <result column="dvalue" property="dvalue" jdbcType="VARCHAR" />
    <result column="group_id" property="groupId" jdbcType="VARCHAR" />
    <result column="dstatus" property="dstatus" jdbcType="INTEGER" />
    <result column="description" property="description" jdbcType="CHAR" />
    <result column="seq" property="seq" jdbcType="INTEGER" />
  </resultMap>
  <sql id="Criteria_Where_Clause" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    <where >
      <foreach collection="oredCriteria" item="criteria" separator="or" >
        <if test="criteria.valid" >
          <trim prefix="(" suffix=")" prefixOverrides="and" >
            <foreach collection="criteria.criteria" item="criterion" >
              <choose >
                <when test="criterion.noValue" >
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue" >
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue" >
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue" >
                  and ${criterion.condition}
                  <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>
  <sql id="Update_By_Criteria_Where_Clause" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    <where >
      <foreach collection="param.oredCriteria" item="criteria" separator="or" >
        <if test="criteria.valid" >
          <trim prefix="(" suffix=")" prefixOverrides="and" >
            <foreach collection="criteria.criteria" item="criterion" >
              <choose >
                <when test="criterion.noValue" >
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue" >
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue" >
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue" >
                  and ${criterion.condition}
                  <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>
  <sql id="Base_Column_List" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    id, dkey, dvalue, group_id, dstatus, description, seq
  </sql>
  <select id="selectByCriteria" resultMap="BaseResultMap" parameterType="ibatisData.DictCriteria" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    select
    <if test="distinct" >
      distinct
    </if>
    'true' as QUERYID,
    <include refid="Base_Column_List" />
    from t_dict
    <if test="_parameter != null" >
      <include refid="Criteria_Where_Clause" />
    </if>
    <if test="orderByClause != null" >
      order by ${orderByClause}
    </if>
    <if test="start != null and end !=null " >
      limit #{start} , #{end}
    </if>
  </select>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    select 
    <include refid="Base_Column_List" />
    from t_dict
    where id = #{id,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    delete from t_dict
    where id = #{id,jdbcType=VARCHAR}
  </delete>
  <delete id="deleteByCriteria" parameterType="ibatisData.DictCriteria" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    delete from t_dict
    <if test="_parameter != null" >
      <include refid="Criteria_Where_Clause" />
    </if>
  </delete>
  <insert id="insertSelective" parameterType="ibatisData.Dict" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    <selectKey resultType="java.lang.String" keyProperty="id" order="AFTER" >
      SELECT LAST_INSERT_ID()
    </selectKey>
    insert into t_dict
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="dkey != null" >
        dkey,
      </if>
      <if test="dvalue != null" >
        dvalue,
      </if>
      <if test="groupId != null" >
        group_id,
      </if>
      <if test="dstatus != null" >
        dstatus,
      </if>
      <if test="description != null" >
        description,
      </if>
      <if test="seq != null" >
        seq,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="dkey != null" >
        #{dkey,jdbcType=VARCHAR},
      </if>
      <if test="dvalue != null" >
        #{dvalue,jdbcType=VARCHAR},
      </if>
      <if test="groupId != null" >
        #{groupId,jdbcType=VARCHAR},
      </if>
      <if test="dstatus != null" >
        #{dstatus,jdbcType=INTEGER},
      </if>
      <if test="description != null" >
        #{description,jdbcType=CHAR},
      </if>
      <if test="seq != null" >
        #{seq,jdbcType=INTEGER},
      </if>
    </trim>
  </insert>
  <select id="countByCriteria" parameterType="ibatisData.DictCriteria" resultType="java.lang.Integer" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    select count(*) from t_dict
    <if test="_parameter != null" >
      <include refid="Criteria_Where_Clause" />
    </if>
  </select>
  <update id="updateByCriteriaSelective" parameterType="map" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    update t_dict
    <set >
      <if test="record.dkey != null" >
        dkey = #{record.dkey,jdbcType=VARCHAR},
      </if>
      <if test="record.dvalue != null" >
        dvalue = #{record.dvalue,jdbcType=VARCHAR},
      </if>
      <if test="record.groupId != null" >
        group_id = #{record.groupId,jdbcType=VARCHAR},
      </if>
      <if test="record.dstatus != null" >
        dstatus = #{record.dstatus,jdbcType=INTEGER},
      </if>
      <if test="record.description != null" >
        description = #{record.description,jdbcType=CHAR},
      </if>
      <if test="record.seq != null" >
        seq = #{record.seq,jdbcType=INTEGER},
      </if>
    </set>
    <if test="_parameter != null" >
      <include refid="Update_By_Criteria_Where_Clause" />
    </if>
  </update>
  <update id="updateByPrimaryKeySelective" parameterType="ibatisData.Dict" >
    <!--
      WARNING - 
      		此SQL语句为自动生成,请不要修改.
      DATE: 2017-04-16 21:38
    -->
    update t_dict
    <set >
      <if test="dkey != null" >
        dkey = #{dkey,jdbcType=VARCHAR},
      </if>
      <if test="dvalue != null" >
        dvalue = #{dvalue,jdbcType=VARCHAR},
      </if>
      <if test="groupId != null" >
        group_id = #{groupId,jdbcType=VARCHAR},
      </if>
      <if test="dstatus != null" >
        dstatus = #{dstatus,jdbcType=INTEGER},
      </if>
      <if test="description != null" >
        description = #{description,jdbcType=CHAR},
      </if>
      <if test="seq != null" >
        seq = #{seq,jdbcType=INTEGER},
      </if>
    </set>
    where id = #{id,jdbcType=VARCHAR}
  </update>
</mapper>

© 著作权归作者所有

c
粉丝 2
博文 2
码字总数 1475
作品 0
南京
私信 提问
MyBatis使用Generator自动生成代码

MyBatis使用Generator自动生成代码 MyBatis中,可以使用Generator自动生成代码,包括DAO层、 MODEL层 、MAPPING SQL映射文件。 第一步:...

满风
2014/03/28
0
0
mybatis-generator使用教程

一、前提条件 (1)JRE环境 (2)数据库连接驱动(jar包) 相应数据库的jdbc jar包 (3)mybatis-generator-core-1.x.x.jar https://github.com/mybatis/generator/releases 二、配置 准备一个...

莫铭
2015/12/09
1K
1
Mybatis-generator的使用

一、核心文件generator.xml 指定数据库jar包位置、数据库连接信息、生成包的位置、表名等关键信息。该文件放在任意位置。

woshixuye111
2014/06/07
0
0
利用mybatis-generator自动生成代码

mybatis-generator 使用maven插件生成代码的步骤,经过测试: 开发工具:myeclipse2014 jdk1.6 一、在pom.xml中添加plugin <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>......

卯金刀GG
2016/09/13
55
1
Spring Boot项目利用MyBatis Generator进行数据层代码自动生成

概 述 MyBatis Generator (简称 MBG) 是一个用于 MyBatis和 iBATIS的代码生成器。它可以为 MyBatis的所有版本以及 2.2.0之后的 iBATIS版本自动生成 ORM层代码,典型地包括我们日常需要手写的...

CodeSheep
02/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

性能优化

js相关 根据js时间线,将js放在最下面加载,先加载DOM,再加载js 懒执行,就是将某些逻辑延迟到使用时在执行。该技术可用于首屏优化,对于某些耗时逻辑并不需要在首屏就使用的,就可以使用懒...

祖达
12分钟前
0
0
websocket通信failed to execute 'send'问题的解决

在建立web socket通信后,发送数据时,出现下图所示现象: 问题代码演示 function TestSockets() { //实例化一个WebSocket对象 var socket = new WebSocket("ws://127.0.0.1:8000/w...

城市之雾
18分钟前
0
0
PHPStorm 如何设置 yaf 代码提示?

下载 php-yaf-doc git clone https://github.com/elad-yosifon/php-yaf-doc.git PHPStorm 如下设置 使用

whoru
19分钟前
0
0
typeorm drop foreign key

1. 问题描述 项目代码中使用typeorm进行mysql的数据操作, 昨天突然部署测试环境发现测试环境数据库的外键都为空了, 导致涉及的整个系统不可用. 2. 问题探究 尝试复现 mysqldump 线上数据, 然...

jimmywa
20分钟前
2
0
好程序员web前端开发测验之css部分

好程序员web前端开发测验之css部分Front End Web Development Quiz CSS 部分问题与解答 Q: CSS 属性是否区分大小写? <p><font size="3">  ul {</font></p> <p><font size="3">  MaRGin:......

好程序员IT
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部