mybatis-generator扩展教程系列 -- 自定义sql xml文件
来源:互联网 发布:网络歌手唱的歌真难听 编辑:程序博客网 时间:2024/06/14 14:50
今天抽空写一下生成器比较重要的环节,如何自定义mybatis生成器的sql xml文件,因为原生出来的格式不好看,命名也不符合我们日常使用习惯,很多冗余的sql节点,下面我直接直入主题演示代码了,还是老规矩使用之前教程延续下来的项目用例
1.先看看我们原始生成出来的mapper.xml文件,1.节点间没有空行不符合我们日常格式 2.CRUD方法太累赘,我们其实只需要insert,update,delete,select
<?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.test.dao.QfdSketchMapper"> <resultMap id="BaseResultMap" type="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> <id column="id" jdbcType="BIGINT" property="id" /> <result column="courseName" jdbcType="VARCHAR" property="coursename" /> <result column="courseReq" jdbcType="VARCHAR" property="coursereq" /> <result column="teaId" jdbcType="VARCHAR" property="teaid" /> <result column="teaName" jdbcType="VARCHAR" property="teaname" /> <result column="stuId" jdbcType="VARCHAR" property="stuid" /> <result column="stuName" jdbcType="VARCHAR" property="stuname" /> <result column="stuPhone" jdbcType="VARCHAR" property="stuphone" /> <result column="textbookId" jdbcType="BIGINT" property="textbookid" /> <result column="creator" jdbcType="VARCHAR" property="creator" /> <result column="lastModifier" jdbcType="VARCHAR" property="lastmodifier" /> <result column="countDate" jdbcType="INTEGER" property="countdate" /> <result column="countTime" jdbcType="INTEGER" property="counttime" /> <result column="countStu" jdbcType="INTEGER" property="countstu" /> <result column="sketchType" jdbcType="INTEGER" property="sketchtype" /> <result column="courseStyle" jdbcType="INTEGER" property="coursestyle" /> <result column="classType" jdbcType="INTEGER" property="classtype" /> <result column="process" jdbcType="INTEGER" property="process" /> <result column="courseStatus" jdbcType="INTEGER" property="coursestatus" /> <result column="pay" jdbcType="VARCHAR" property="pay" /> <result column="perPay" jdbcType="VARCHAR" property="perpay" /> <result column="couponPay" jdbcType="VARCHAR" property="couponpay" /> <result column="originalPay" jdbcType="VARCHAR" property="originalpay" /> <result column="couponRule" jdbcType="INTEGER" property="couponrule" /> <result column="beginDate" jdbcType="BIGINT" property="begindate" /> <result column="endDate" jdbcType="BIGINT" property="enddate" /> <result column="courseNum" jdbcType="INTEGER" property="coursenum" /> <result column="hasNum" jdbcType="INTEGER" property="hasnum" /> <result column="cancelNum" jdbcType="INTEGER" property="cancelnum" /> <result column="courseNumInput" jdbcType="INTEGER" property="coursenuminput" /> <result column="orderNum" jdbcType="INTEGER" property="ordernum" /> <result column="fav" jdbcType="BIGINT" property="fav" /> <result column="vipLevel" jdbcType="INTEGER" property="viplevel" /> <result column="cancelReason" jdbcType="INTEGER" property="cancelreason" /> <result column="createDate" jdbcType="BIGINT" property="createdate" /> <result column="lastModDate" jdbcType="BIGINT" property="lastmoddate" /> <result column="formatter" jdbcType="VARCHAR" property="formatter" /> <result column="status" jdbcType="TINYINT" property="status" /> </resultMap> <sql id="Base_Column_List"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> id, courseName, courseReq, teaId, teaName, stuId, stuName, stuPhone, textbookId, creator, lastModifier, countDate, countTime, countStu, sketchType, courseStyle, classType, process, courseStatus, pay, perPay, couponPay, originalPay, couponRule, beginDate, endDate, courseNum, hasNum, cancelNum, courseNumInput, orderNum, fav, vipLevel, cancelReason, createDate, lastModDate, formatter, status </sql> <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> select <include refid="Base_Column_List" /> from qfd_sketch where id = #{id,jdbcType=BIGINT} </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> delete from qfd_sketch where id = #{id,jdbcType=BIGINT} </delete> <insert id="insert" parameterType="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> insert into qfd_sketch (id, courseName, courseReq, teaId, teaName, stuId, stuName, stuPhone, textbookId, creator, lastModifier, countDate, countTime, countStu, sketchType, courseStyle, classType, process, courseStatus, pay, perPay, couponPay, originalPay, couponRule, beginDate, endDate, courseNum, hasNum, cancelNum, courseNumInput, orderNum, fav, vipLevel, cancelReason, createDate, lastModDate, formatter, status) values (#{id,jdbcType=BIGINT}, #{coursename,jdbcType=VARCHAR}, #{coursereq,jdbcType=VARCHAR}, #{teaid,jdbcType=VARCHAR}, #{teaname,jdbcType=VARCHAR}, #{stuid,jdbcType=VARCHAR}, #{stuname,jdbcType=VARCHAR}, #{stuphone,jdbcType=VARCHAR}, #{textbookid,jdbcType=BIGINT}, #{creator,jdbcType=VARCHAR}, #{lastmodifier,jdbcType=VARCHAR}, #{countdate,jdbcType=INTEGER}, #{counttime,jdbcType=INTEGER}, #{countstu,jdbcType=INTEGER}, #{sketchtype,jdbcType=INTEGER}, #{coursestyle,jdbcType=INTEGER}, #{classtype,jdbcType=INTEGER}, #{process,jdbcType=INTEGER}, #{coursestatus,jdbcType=INTEGER}, #{pay,jdbcType=VARCHAR}, #{perpay,jdbcType=VARCHAR}, #{couponpay,jdbcType=VARCHAR}, #{originalpay,jdbcType=VARCHAR}, #{couponrule,jdbcType=INTEGER}, #{begindate,jdbcType=BIGINT}, #{enddate,jdbcType=BIGINT}, #{coursenum,jdbcType=INTEGER}, #{hasnum,jdbcType=INTEGER}, #{cancelnum,jdbcType=INTEGER}, #{coursenuminput,jdbcType=INTEGER}, #{ordernum,jdbcType=INTEGER}, #{fav,jdbcType=BIGINT}, #{viplevel,jdbcType=INTEGER}, #{cancelreason,jdbcType=INTEGER}, #{createdate,jdbcType=BIGINT}, #{lastmoddate,jdbcType=BIGINT}, #{formatter,jdbcType=VARCHAR}, #{status,jdbcType=TINYINT}) </insert> <insert id="insertSelective" parameterType="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> insert into qfd_sketch <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="coursename != null"> courseName, </if> <if test="coursereq != null"> courseReq, </if> <if test="teaid != null"> teaId, </if> <if test="teaname != null"> teaName, </if> <if test="stuid != null"> stuId, </if> <if test="stuname != null"> stuName, </if> <if test="stuphone != null"> stuPhone, </if> <if test="textbookid != null"> textbookId, </if> <if test="creator != null"> creator, </if> <if test="lastmodifier != null"> lastModifier, </if> <if test="countdate != null"> countDate, </if> <if test="counttime != null"> countTime, </if> <if test="countstu != null"> countStu, </if> <if test="sketchtype != null"> sketchType, </if> <if test="coursestyle != null"> courseStyle, </if> <if test="classtype != null"> classType, </if> <if test="process != null"> process, </if> <if test="coursestatus != null"> courseStatus, </if> <if test="pay != null"> pay, </if> <if test="perpay != null"> perPay, </if> <if test="couponpay != null"> couponPay, </if> <if test="originalpay != null"> originalPay, </if> <if test="couponrule != null"> couponRule, </if> <if test="begindate != null"> beginDate, </if> <if test="enddate != null"> endDate, </if> <if test="coursenum != null"> courseNum, </if> <if test="hasnum != null"> hasNum, </if> <if test="cancelnum != null"> cancelNum, </if> <if test="coursenuminput != null"> courseNumInput, </if> <if test="ordernum != null"> orderNum, </if> <if test="fav != null"> fav, </if> <if test="viplevel != null"> vipLevel, </if> <if test="cancelreason != null"> cancelReason, </if> <if test="createdate != null"> createDate, </if> <if test="lastmoddate != null"> lastModDate, </if> <if test="formatter != null"> formatter, </if> <if test="status != null"> status, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=BIGINT}, </if> <if test="coursename != null"> #{coursename,jdbcType=VARCHAR}, </if> <if test="coursereq != null"> #{coursereq,jdbcType=VARCHAR}, </if> <if test="teaid != null"> #{teaid,jdbcType=VARCHAR}, </if> <if test="teaname != null"> #{teaname,jdbcType=VARCHAR}, </if> <if test="stuid != null"> #{stuid,jdbcType=VARCHAR}, </if> <if test="stuname != null"> #{stuname,jdbcType=VARCHAR}, </if> <if test="stuphone != null"> #{stuphone,jdbcType=VARCHAR}, </if> <if test="textbookid != null"> #{textbookid,jdbcType=BIGINT}, </if> <if test="creator != null"> #{creator,jdbcType=VARCHAR}, </if> <if test="lastmodifier != null"> #{lastmodifier,jdbcType=VARCHAR}, </if> <if test="countdate != null"> #{countdate,jdbcType=INTEGER}, </if> <if test="counttime != null"> #{counttime,jdbcType=INTEGER}, </if> <if test="countstu != null"> #{countstu,jdbcType=INTEGER}, </if> <if test="sketchtype != null"> #{sketchtype,jdbcType=INTEGER}, </if> <if test="coursestyle != null"> #{coursestyle,jdbcType=INTEGER}, </if> <if test="classtype != null"> #{classtype,jdbcType=INTEGER}, </if> <if test="process != null"> #{process,jdbcType=INTEGER}, </if> <if test="coursestatus != null"> #{coursestatus,jdbcType=INTEGER}, </if> <if test="pay != null"> #{pay,jdbcType=VARCHAR}, </if> <if test="perpay != null"> #{perpay,jdbcType=VARCHAR}, </if> <if test="couponpay != null"> #{couponpay,jdbcType=VARCHAR}, </if> <if test="originalpay != null"> #{originalpay,jdbcType=VARCHAR}, </if> <if test="couponrule != null"> #{couponrule,jdbcType=INTEGER}, </if> <if test="begindate != null"> #{begindate,jdbcType=BIGINT}, </if> <if test="enddate != null"> #{enddate,jdbcType=BIGINT}, </if> <if test="coursenum != null"> #{coursenum,jdbcType=INTEGER}, </if> <if test="hasnum != null"> #{hasnum,jdbcType=INTEGER}, </if> <if test="cancelnum != null"> #{cancelnum,jdbcType=INTEGER}, </if> <if test="coursenuminput != null"> #{coursenuminput,jdbcType=INTEGER}, </if> <if test="ordernum != null"> #{ordernum,jdbcType=INTEGER}, </if> <if test="fav != null"> #{fav,jdbcType=BIGINT}, </if> <if test="viplevel != null"> #{viplevel,jdbcType=INTEGER}, </if> <if test="cancelreason != null"> #{cancelreason,jdbcType=INTEGER}, </if> <if test="createdate != null"> #{createdate,jdbcType=BIGINT}, </if> <if test="lastmoddate != null"> #{lastmoddate,jdbcType=BIGINT}, </if> <if test="formatter != null"> #{formatter,jdbcType=VARCHAR}, </if> <if test="status != null"> #{status,jdbcType=TINYINT}, </if> </trim> </insert> <update id="updateByPrimaryKeySelective" parameterType="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> update qfd_sketch <set> <if test="coursename != null"> courseName = #{coursename,jdbcType=VARCHAR}, </if> <if test="coursereq != null"> courseReq = #{coursereq,jdbcType=VARCHAR}, </if> <if test="teaid != null"> teaId = #{teaid,jdbcType=VARCHAR}, </if> <if test="teaname != null"> teaName = #{teaname,jdbcType=VARCHAR}, </if> <if test="stuid != null"> stuId = #{stuid,jdbcType=VARCHAR}, </if> <if test="stuname != null"> stuName = #{stuname,jdbcType=VARCHAR}, </if> <if test="stuphone != null"> stuPhone = #{stuphone,jdbcType=VARCHAR}, </if> <if test="textbookid != null"> textbookId = #{textbookid,jdbcType=BIGINT}, </if> <if test="creator != null"> creator = #{creator,jdbcType=VARCHAR}, </if> <if test="lastmodifier != null"> lastModifier = #{lastmodifier,jdbcType=VARCHAR}, </if> <if test="countdate != null"> countDate = #{countdate,jdbcType=INTEGER}, </if> <if test="counttime != null"> countTime = #{counttime,jdbcType=INTEGER}, </if> <if test="countstu != null"> countStu = #{countstu,jdbcType=INTEGER}, </if> <if test="sketchtype != null"> sketchType = #{sketchtype,jdbcType=INTEGER}, </if> <if test="coursestyle != null"> courseStyle = #{coursestyle,jdbcType=INTEGER}, </if> <if test="classtype != null"> classType = #{classtype,jdbcType=INTEGER}, </if> <if test="process != null"> process = #{process,jdbcType=INTEGER}, </if> <if test="coursestatus != null"> courseStatus = #{coursestatus,jdbcType=INTEGER}, </if> <if test="pay != null"> pay = #{pay,jdbcType=VARCHAR}, </if> <if test="perpay != null"> perPay = #{perpay,jdbcType=VARCHAR}, </if> <if test="couponpay != null"> couponPay = #{couponpay,jdbcType=VARCHAR}, </if> <if test="originalpay != null"> originalPay = #{originalpay,jdbcType=VARCHAR}, </if> <if test="couponrule != null"> couponRule = #{couponrule,jdbcType=INTEGER}, </if> <if test="begindate != null"> beginDate = #{begindate,jdbcType=BIGINT}, </if> <if test="enddate != null"> endDate = #{enddate,jdbcType=BIGINT}, </if> <if test="coursenum != null"> courseNum = #{coursenum,jdbcType=INTEGER}, </if> <if test="hasnum != null"> hasNum = #{hasnum,jdbcType=INTEGER}, </if> <if test="cancelnum != null"> cancelNum = #{cancelnum,jdbcType=INTEGER}, </if> <if test="coursenuminput != null"> courseNumInput = #{coursenuminput,jdbcType=INTEGER}, </if> <if test="ordernum != null"> orderNum = #{ordernum,jdbcType=INTEGER}, </if> <if test="fav != null"> fav = #{fav,jdbcType=BIGINT}, </if> <if test="viplevel != null"> vipLevel = #{viplevel,jdbcType=INTEGER}, </if> <if test="cancelreason != null"> cancelReason = #{cancelreason,jdbcType=INTEGER}, </if> <if test="createdate != null"> createDate = #{createdate,jdbcType=BIGINT}, </if> <if test="lastmoddate != null"> lastModDate = #{lastmoddate,jdbcType=BIGINT}, </if> <if test="formatter != null"> formatter = #{formatter,jdbcType=VARCHAR}, </if> <if test="status != null"> status = #{status,jdbcType=TINYINT}, </if> </set> where id = #{id,jdbcType=BIGINT} </update> <update id="updateByPrimaryKey" parameterType="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> update qfd_sketch set courseName = #{coursename,jdbcType=VARCHAR}, courseReq = #{coursereq,jdbcType=VARCHAR}, teaId = #{teaid,jdbcType=VARCHAR}, teaName = #{teaname,jdbcType=VARCHAR}, stuId = #{stuid,jdbcType=VARCHAR}, stuName = #{stuname,jdbcType=VARCHAR}, stuPhone = #{stuphone,jdbcType=VARCHAR}, textbookId = #{textbookid,jdbcType=BIGINT}, creator = #{creator,jdbcType=VARCHAR}, lastModifier = #{lastmodifier,jdbcType=VARCHAR}, countDate = #{countdate,jdbcType=INTEGER}, countTime = #{counttime,jdbcType=INTEGER}, countStu = #{countstu,jdbcType=INTEGER}, sketchType = #{sketchtype,jdbcType=INTEGER}, courseStyle = #{coursestyle,jdbcType=INTEGER}, classType = #{classtype,jdbcType=INTEGER}, process = #{process,jdbcType=INTEGER}, courseStatus = #{coursestatus,jdbcType=INTEGER}, pay = #{pay,jdbcType=VARCHAR}, perPay = #{perpay,jdbcType=VARCHAR}, couponPay = #{couponpay,jdbcType=VARCHAR}, originalPay = #{originalpay,jdbcType=VARCHAR}, couponRule = #{couponrule,jdbcType=INTEGER}, beginDate = #{begindate,jdbcType=BIGINT}, endDate = #{enddate,jdbcType=BIGINT}, courseNum = #{coursenum,jdbcType=INTEGER}, hasNum = #{hasnum,jdbcType=INTEGER}, cancelNum = #{cancelnum,jdbcType=INTEGER}, courseNumInput = #{coursenuminput,jdbcType=INTEGER}, orderNum = #{ordernum,jdbcType=INTEGER}, fav = #{fav,jdbcType=BIGINT}, vipLevel = #{viplevel,jdbcType=INTEGER}, cancelReason = #{cancelreason,jdbcType=INTEGER}, createDate = #{createdate,jdbcType=BIGINT}, lastModDate = #{lastmoddate,jdbcType=BIGINT}, formatter = #{formatter,jdbcType=VARCHAR}, status = #{status,jdbcType=TINYINT} where id = #{id,jdbcType=BIGINT} </update></mapper>
2.根据已知问题,我们先处理一下问题吧,保留insert,update,delete方法作为示例,顺便给他们增加隔行的格式化
先看看XMLMapperGenerator.java这个类的getSqlMapElement()方法,可以看到很多addxxx方法,这里就是拼接sql xml文件的逻辑,我们只保留必须的方法
protected XmlElement getSqlMapElement() { FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable(); progressCallback.startTask(getString( "Progress.12", table.toString())); //$NON-NLS-1$ XmlElement answer = new XmlElement("mapper"); //$NON-NLS-1$ String namespace = introspectedTable.getMyBatis3SqlMapNamespace(); answer.addAttribute(new Attribute("namespace", //$NON-NLS-1$ namespace)); context.getCommentGenerator().addRootComment(answer); addResultMapWithoutBLOBsElement(answer); addResultMapWithBLOBsElement(answer); addExampleWhereClauseElement(answer); addMyBatis3UpdateByExampleWhereClauseElement(answer); addBaseColumnListElement(answer); addBlobColumnListElement(answer); addSelectByExampleWithBLOBsElement(answer); addSelectByExampleWithoutBLOBsElement(answer); addSelectByPrimaryKeyElement(answer); addDeleteByPrimaryKeyElement(answer); addDeleteByExampleElement(answer); addInsertElement(answer); addInsertSelectiveElement(answer); addCountByExampleElement(answer); addUpdateByExampleSelectiveElement(answer); addUpdateByExampleWithBLOBsElement(answer); addUpdateByExampleWithoutBLOBsElement(answer); addUpdateByPrimaryKeySelectiveElement(answer); addUpdateByPrimaryKeyWithBLOBsElement(answer); addUpdateByPrimaryKeyWithoutBLOBsElement(answer); return answer; }
修改后的方法
protected XmlElement getSqlMapElement() { FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable(); progressCallback.startTask(getString( "Progress.12", table.toString())); //$NON-NLS-1$ XmlElement answer = new XmlElement("mapper"); //$NON-NLS-1$ String namespace = introspectedTable.getMyBatis3SqlMapNamespace(); answer.addAttribute(new Attribute("namespace", //$NON-NLS-1$ namespace)); context.getCommentGenerator().addRootComment(answer);// addResultMapWithoutBLOBsElement(answer);// addResultMapWithBLOBsElement(answer);// addExampleWhereClauseElement(answer);// addMyBatis3UpdateByExampleWhereClauseElement(answer);// addBaseColumnListElement(answer);// addBlobColumnListElement(answer);// addSelectByExampleWithBLOBsElement(answer);// addSelectByExampleWithoutBLOBsElement(answer);// addSelectByPrimaryKeyElement(answer);// addDeleteByPrimaryKeyElement(answer);// addDeleteByExampleElement(answer);// addInsertElement(answer);// addInsertSelectiveElement(answer);// addCountByExampleElement(answer);// addUpdateByExampleSelectiveElement(answer);// addUpdateByExampleWithBLOBsElement(answer);// addUpdateByExampleWithoutBLOBsElement(answer);// addUpdateByPrimaryKeySelectiveElement(answer);// addUpdateByPrimaryKeyWithBLOBsElement(answer);// addUpdateByPrimaryKeyWithoutBLOBsElement(answer); addResultMapWithoutBLOBsElement(answer); addBaseColumnListElement(answer); addInsertSelectiveElement(answer); addUpdateByPrimaryKeySelectiveElement(answer); addDeleteByPrimaryKeyElement(answer); return answer; }
3.修改这个方法后,我们运行下生成文件看看效果
<?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.test.dao.QfdSketchMapper"> <resultMap id="BaseResultMap" type="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> <id column="id" jdbcType="BIGINT" property="id" /> <result column="courseName" jdbcType="VARCHAR" property="coursename" /> <result column="courseReq" jdbcType="VARCHAR" property="coursereq" /> <result column="teaId" jdbcType="VARCHAR" property="teaid" /> <result column="teaName" jdbcType="VARCHAR" property="teaname" /> <result column="stuId" jdbcType="VARCHAR" property="stuid" /> <result column="stuName" jdbcType="VARCHAR" property="stuname" /> <result column="stuPhone" jdbcType="VARCHAR" property="stuphone" /> <result column="textbookId" jdbcType="BIGINT" property="textbookid" /> <result column="creator" jdbcType="VARCHAR" property="creator" /> <result column="lastModifier" jdbcType="VARCHAR" property="lastmodifier" /> <result column="countDate" jdbcType="INTEGER" property="countdate" /> <result column="countTime" jdbcType="INTEGER" property="counttime" /> <result column="countStu" jdbcType="INTEGER" property="countstu" /> <result column="sketchType" jdbcType="INTEGER" property="sketchtype" /> <result column="courseStyle" jdbcType="INTEGER" property="coursestyle" /> <result column="classType" jdbcType="INTEGER" property="classtype" /> <result column="process" jdbcType="INTEGER" property="process" /> <result column="courseStatus" jdbcType="INTEGER" property="coursestatus" /> <result column="pay" jdbcType="VARCHAR" property="pay" /> <result column="perPay" jdbcType="VARCHAR" property="perpay" /> <result column="couponPay" jdbcType="VARCHAR" property="couponpay" /> <result column="originalPay" jdbcType="VARCHAR" property="originalpay" /> <result column="couponRule" jdbcType="INTEGER" property="couponrule" /> <result column="beginDate" jdbcType="BIGINT" property="begindate" /> <result column="endDate" jdbcType="BIGINT" property="enddate" /> <result column="courseNum" jdbcType="INTEGER" property="coursenum" /> <result column="hasNum" jdbcType="INTEGER" property="hasnum" /> <result column="cancelNum" jdbcType="INTEGER" property="cancelnum" /> <result column="courseNumInput" jdbcType="INTEGER" property="coursenuminput" /> <result column="orderNum" jdbcType="INTEGER" property="ordernum" /> <result column="fav" jdbcType="BIGINT" property="fav" /> <result column="vipLevel" jdbcType="INTEGER" property="viplevel" /> <result column="cancelReason" jdbcType="INTEGER" property="cancelreason" /> <result column="createDate" jdbcType="BIGINT" property="createdate" /> <result column="lastModDate" jdbcType="BIGINT" property="lastmoddate" /> <result column="formatter" jdbcType="VARCHAR" property="formatter" /> <result column="status" jdbcType="TINYINT" property="status" /> </resultMap> <sql id="Base_Column_List"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> id, courseName, courseReq, teaId, teaName, stuId, stuName, stuPhone, textbookId, creator, lastModifier, countDate, countTime, countStu, sketchType, courseStyle, classType, process, courseStatus, pay, perPay, couponPay, originalPay, couponRule, beginDate, endDate, courseNum, hasNum, cancelNum, courseNumInput, orderNum, fav, vipLevel, cancelReason, createDate, lastModDate, formatter, status </sql> <insert id="insertSelective" parameterType="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> insert into qfd_sketch <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="coursename != null"> courseName, </if> <if test="coursereq != null"> courseReq, </if> <if test="teaid != null"> teaId, </if> <if test="teaname != null"> teaName, </if> <if test="stuid != null"> stuId, </if> <if test="stuname != null"> stuName, </if> <if test="stuphone != null"> stuPhone, </if> <if test="textbookid != null"> textbookId, </if> <if test="creator != null"> creator, </if> <if test="lastmodifier != null"> lastModifier, </if> <if test="countdate != null"> countDate, </if> <if test="counttime != null"> countTime, </if> <if test="countstu != null"> countStu, </if> <if test="sketchtype != null"> sketchType, </if> <if test="coursestyle != null"> courseStyle, </if> <if test="classtype != null"> classType, </if> <if test="process != null"> process, </if> <if test="coursestatus != null"> courseStatus, </if> <if test="pay != null"> pay, </if> <if test="perpay != null"> perPay, </if> <if test="couponpay != null"> couponPay, </if> <if test="originalpay != null"> originalPay, </if> <if test="couponrule != null"> couponRule, </if> <if test="begindate != null"> beginDate, </if> <if test="enddate != null"> endDate, </if> <if test="coursenum != null"> courseNum, </if> <if test="hasnum != null"> hasNum, </if> <if test="cancelnum != null"> cancelNum, </if> <if test="coursenuminput != null"> courseNumInput, </if> <if test="ordernum != null"> orderNum, </if> <if test="fav != null"> fav, </if> <if test="viplevel != null"> vipLevel, </if> <if test="cancelreason != null"> cancelReason, </if> <if test="createdate != null"> createDate, </if> <if test="lastmoddate != null"> lastModDate, </if> <if test="formatter != null"> formatter, </if> <if test="status != null"> status, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=BIGINT}, </if> <if test="coursename != null"> #{coursename,jdbcType=VARCHAR}, </if> <if test="coursereq != null"> #{coursereq,jdbcType=VARCHAR}, </if> <if test="teaid != null"> #{teaid,jdbcType=VARCHAR}, </if> <if test="teaname != null"> #{teaname,jdbcType=VARCHAR}, </if> <if test="stuid != null"> #{stuid,jdbcType=VARCHAR}, </if> <if test="stuname != null"> #{stuname,jdbcType=VARCHAR}, </if> <if test="stuphone != null"> #{stuphone,jdbcType=VARCHAR}, </if> <if test="textbookid != null"> #{textbookid,jdbcType=BIGINT}, </if> <if test="creator != null"> #{creator,jdbcType=VARCHAR}, </if> <if test="lastmodifier != null"> #{lastmodifier,jdbcType=VARCHAR}, </if> <if test="countdate != null"> #{countdate,jdbcType=INTEGER}, </if> <if test="counttime != null"> #{counttime,jdbcType=INTEGER}, </if> <if test="countstu != null"> #{countstu,jdbcType=INTEGER}, </if> <if test="sketchtype != null"> #{sketchtype,jdbcType=INTEGER}, </if> <if test="coursestyle != null"> #{coursestyle,jdbcType=INTEGER}, </if> <if test="classtype != null"> #{classtype,jdbcType=INTEGER}, </if> <if test="process != null"> #{process,jdbcType=INTEGER}, </if> <if test="coursestatus != null"> #{coursestatus,jdbcType=INTEGER}, </if> <if test="pay != null"> #{pay,jdbcType=VARCHAR}, </if> <if test="perpay != null"> #{perpay,jdbcType=VARCHAR}, </if> <if test="couponpay != null"> #{couponpay,jdbcType=VARCHAR}, </if> <if test="originalpay != null"> #{originalpay,jdbcType=VARCHAR}, </if> <if test="couponrule != null"> #{couponrule,jdbcType=INTEGER}, </if> <if test="begindate != null"> #{begindate,jdbcType=BIGINT}, </if> <if test="enddate != null"> #{enddate,jdbcType=BIGINT}, </if> <if test="coursenum != null"> #{coursenum,jdbcType=INTEGER}, </if> <if test="hasnum != null"> #{hasnum,jdbcType=INTEGER}, </if> <if test="cancelnum != null"> #{cancelnum,jdbcType=INTEGER}, </if> <if test="coursenuminput != null"> #{coursenuminput,jdbcType=INTEGER}, </if> <if test="ordernum != null"> #{ordernum,jdbcType=INTEGER}, </if> <if test="fav != null"> #{fav,jdbcType=BIGINT}, </if> <if test="viplevel != null"> #{viplevel,jdbcType=INTEGER}, </if> <if test="cancelreason != null"> #{cancelreason,jdbcType=INTEGER}, </if> <if test="createdate != null"> #{createdate,jdbcType=BIGINT}, </if> <if test="lastmoddate != null"> #{lastmoddate,jdbcType=BIGINT}, </if> <if test="formatter != null"> #{formatter,jdbcType=VARCHAR}, </if> <if test="status != null"> #{status,jdbcType=TINYINT}, </if> </trim> </insert> <update id="updateByPrimaryKeySelective" parameterType="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> update qfd_sketch <set> <if test="coursename != null"> courseName = #{coursename,jdbcType=VARCHAR}, </if> <if test="coursereq != null"> courseReq = #{coursereq,jdbcType=VARCHAR}, </if> <if test="teaid != null"> teaId = #{teaid,jdbcType=VARCHAR}, </if> <if test="teaname != null"> teaName = #{teaname,jdbcType=VARCHAR}, </if> <if test="stuid != null"> stuId = #{stuid,jdbcType=VARCHAR}, </if> <if test="stuname != null"> stuName = #{stuname,jdbcType=VARCHAR}, </if> <if test="stuphone != null"> stuPhone = #{stuphone,jdbcType=VARCHAR}, </if> <if test="textbookid != null"> textbookId = #{textbookid,jdbcType=BIGINT}, </if> <if test="creator != null"> creator = #{creator,jdbcType=VARCHAR}, </if> <if test="lastmodifier != null"> lastModifier = #{lastmodifier,jdbcType=VARCHAR}, </if> <if test="countdate != null"> countDate = #{countdate,jdbcType=INTEGER}, </if> <if test="counttime != null"> countTime = #{counttime,jdbcType=INTEGER}, </if> <if test="countstu != null"> countStu = #{countstu,jdbcType=INTEGER}, </if> <if test="sketchtype != null"> sketchType = #{sketchtype,jdbcType=INTEGER}, </if> <if test="coursestyle != null"> courseStyle = #{coursestyle,jdbcType=INTEGER}, </if> <if test="classtype != null"> classType = #{classtype,jdbcType=INTEGER}, </if> <if test="process != null"> process = #{process,jdbcType=INTEGER}, </if> <if test="coursestatus != null"> courseStatus = #{coursestatus,jdbcType=INTEGER}, </if> <if test="pay != null"> pay = #{pay,jdbcType=VARCHAR}, </if> <if test="perpay != null"> perPay = #{perpay,jdbcType=VARCHAR}, </if> <if test="couponpay != null"> couponPay = #{couponpay,jdbcType=VARCHAR}, </if> <if test="originalpay != null"> originalPay = #{originalpay,jdbcType=VARCHAR}, </if> <if test="couponrule != null"> couponRule = #{couponrule,jdbcType=INTEGER}, </if> <if test="begindate != null"> beginDate = #{begindate,jdbcType=BIGINT}, </if> <if test="enddate != null"> endDate = #{enddate,jdbcType=BIGINT}, </if> <if test="coursenum != null"> courseNum = #{coursenum,jdbcType=INTEGER}, </if> <if test="hasnum != null"> hasNum = #{hasnum,jdbcType=INTEGER}, </if> <if test="cancelnum != null"> cancelNum = #{cancelnum,jdbcType=INTEGER}, </if> <if test="coursenuminput != null"> courseNumInput = #{coursenuminput,jdbcType=INTEGER}, </if> <if test="ordernum != null"> orderNum = #{ordernum,jdbcType=INTEGER}, </if> <if test="fav != null"> fav = #{fav,jdbcType=BIGINT}, </if> <if test="viplevel != null"> vipLevel = #{viplevel,jdbcType=INTEGER}, </if> <if test="cancelreason != null"> cancelReason = #{cancelreason,jdbcType=INTEGER}, </if> <if test="createdate != null"> createDate = #{createdate,jdbcType=BIGINT}, </if> <if test="lastmoddate != null"> lastModDate = #{lastmoddate,jdbcType=BIGINT}, </if> <if test="formatter != null"> formatter = #{formatter,jdbcType=VARCHAR}, </if> <if test="status != null"> status = #{status,jdbcType=TINYINT}, </if> </set> where id = #{id,jdbcType=BIGINT} </update> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> delete from qfd_sketch where id = #{id,jdbcType=BIGINT} </delete></mapper>
4.看到上面的文件后发现已经达到我们一个目的了,把多余的方法给去掉,但是格式不够好看,我们来完成下面一个目标,增加sql节点隔行以及修改sql语句缩进格式
继续看XMLMapperGenerator.java类的initializeAndExecuteGenerator()方法
protected void initializeAndExecuteGenerator( AbstractXmlElementGenerator elementGenerator, XmlElement parentElement) { elementGenerator.setContext(context); elementGenerator.setIntrospectedTable(introspectedTable); elementGenerator.setProgressCallback(progressCallback); elementGenerator.setWarnings(warnings); elementGenerator.addElements(parentElement); }
修改后的方法
protected void initializeAndExecuteGenerator( AbstractXmlElementGenerator elementGenerator, XmlElement parentElement) { elementGenerator.setContext(context); elementGenerator.setIntrospectedTable(introspectedTable); elementGenerator.setProgressCallback(progressCallback); elementGenerator.setWarnings(warnings); parentElement.addElement(new TextElement("")); // 增加一行空白的隔行 elementGenerator.addElements(parentElement); }
打开OutputUtilities.java方法看
public static void xmlIndent(StringBuilder sb, int indentLevel) { for (int i = 0; i < indentLevel; i++) { sb.append(" "); //$NON-NLS-1$ } }
把两个空格符变成4个空格符
public static void xmlIndent(StringBuilder sb, int indentLevel) { for (int i = 0; i < indentLevel; i++) { // sb.append(" "); //$NON-NLS-1$ sb.append(" "); // 4个空格符 } }
5.修改方法后我们重新生成下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="com.test.dao.QfdSketchMapper"> <resultMap id="BaseResultMap" type="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> <id column="id" jdbcType="BIGINT" property="id" /> <result column="courseName" jdbcType="VARCHAR" property="coursename" /> <result column="courseReq" jdbcType="VARCHAR" property="coursereq" /> <result column="teaId" jdbcType="VARCHAR" property="teaid" /> <result column="teaName" jdbcType="VARCHAR" property="teaname" /> <result column="stuId" jdbcType="VARCHAR" property="stuid" /> <result column="stuName" jdbcType="VARCHAR" property="stuname" /> <result column="stuPhone" jdbcType="VARCHAR" property="stuphone" /> <result column="textbookId" jdbcType="BIGINT" property="textbookid" /> <result column="creator" jdbcType="VARCHAR" property="creator" /> <result column="lastModifier" jdbcType="VARCHAR" property="lastmodifier" /> <result column="countDate" jdbcType="INTEGER" property="countdate" /> <result column="countTime" jdbcType="INTEGER" property="counttime" /> <result column="countStu" jdbcType="INTEGER" property="countstu" /> <result column="sketchType" jdbcType="INTEGER" property="sketchtype" /> <result column="courseStyle" jdbcType="INTEGER" property="coursestyle" /> <result column="classType" jdbcType="INTEGER" property="classtype" /> <result column="process" jdbcType="INTEGER" property="process" /> <result column="courseStatus" jdbcType="INTEGER" property="coursestatus" /> <result column="pay" jdbcType="VARCHAR" property="pay" /> <result column="perPay" jdbcType="VARCHAR" property="perpay" /> <result column="couponPay" jdbcType="VARCHAR" property="couponpay" /> <result column="originalPay" jdbcType="VARCHAR" property="originalpay" /> <result column="couponRule" jdbcType="INTEGER" property="couponrule" /> <result column="beginDate" jdbcType="BIGINT" property="begindate" /> <result column="endDate" jdbcType="BIGINT" property="enddate" /> <result column="courseNum" jdbcType="INTEGER" property="coursenum" /> <result column="hasNum" jdbcType="INTEGER" property="hasnum" /> <result column="cancelNum" jdbcType="INTEGER" property="cancelnum" /> <result column="courseNumInput" jdbcType="INTEGER" property="coursenuminput" /> <result column="orderNum" jdbcType="INTEGER" property="ordernum" /> <result column="fav" jdbcType="BIGINT" property="fav" /> <result column="vipLevel" jdbcType="INTEGER" property="viplevel" /> <result column="cancelReason" jdbcType="INTEGER" property="cancelreason" /> <result column="createDate" jdbcType="BIGINT" property="createdate" /> <result column="lastModDate" jdbcType="BIGINT" property="lastmoddate" /> <result column="formatter" jdbcType="VARCHAR" property="formatter" /> <result column="status" jdbcType="TINYINT" property="status" /> </resultMap> <sql id="Base_Column_List"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> id, courseName, courseReq, teaId, teaName, stuId, stuName, stuPhone, textbookId, creator, lastModifier, countDate, countTime, countStu, sketchType, courseStyle, classType, process, courseStatus, pay, perPay, couponPay, originalPay, couponRule, beginDate, endDate, courseNum, hasNum, cancelNum, courseNumInput, orderNum, fav, vipLevel, cancelReason, createDate, lastModDate, formatter, status </sql> <insert id="insertSelective" parameterType="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> insert into qfd_sketch <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="coursename != null"> courseName, </if> <if test="coursereq != null"> courseReq, </if> <if test="teaid != null"> teaId, </if> <if test="teaname != null"> teaName, </if> <if test="stuid != null"> stuId, </if> <if test="stuname != null"> stuName, </if> <if test="stuphone != null"> stuPhone, </if> <if test="textbookid != null"> textbookId, </if> <if test="creator != null"> creator, </if> <if test="lastmodifier != null"> lastModifier, </if> <if test="countdate != null"> countDate, </if> <if test="counttime != null"> countTime, </if> <if test="countstu != null"> countStu, </if> <if test="sketchtype != null"> sketchType, </if> <if test="coursestyle != null"> courseStyle, </if> <if test="classtype != null"> classType, </if> <if test="process != null"> process, </if> <if test="coursestatus != null"> courseStatus, </if> <if test="pay != null"> pay, </if> <if test="perpay != null"> perPay, </if> <if test="couponpay != null"> couponPay, </if> <if test="originalpay != null"> originalPay, </if> <if test="couponrule != null"> couponRule, </if> <if test="begindate != null"> beginDate, </if> <if test="enddate != null"> endDate, </if> <if test="coursenum != null"> courseNum, </if> <if test="hasnum != null"> hasNum, </if> <if test="cancelnum != null"> cancelNum, </if> <if test="coursenuminput != null"> courseNumInput, </if> <if test="ordernum != null"> orderNum, </if> <if test="fav != null"> fav, </if> <if test="viplevel != null"> vipLevel, </if> <if test="cancelreason != null"> cancelReason, </if> <if test="createdate != null"> createDate, </if> <if test="lastmoddate != null"> lastModDate, </if> <if test="formatter != null"> formatter, </if> <if test="status != null"> status, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=BIGINT}, </if> <if test="coursename != null"> #{coursename,jdbcType=VARCHAR}, </if> <if test="coursereq != null"> #{coursereq,jdbcType=VARCHAR}, </if> <if test="teaid != null"> #{teaid,jdbcType=VARCHAR}, </if> <if test="teaname != null"> #{teaname,jdbcType=VARCHAR}, </if> <if test="stuid != null"> #{stuid,jdbcType=VARCHAR}, </if> <if test="stuname != null"> #{stuname,jdbcType=VARCHAR}, </if> <if test="stuphone != null"> #{stuphone,jdbcType=VARCHAR}, </if> <if test="textbookid != null"> #{textbookid,jdbcType=BIGINT}, </if> <if test="creator != null"> #{creator,jdbcType=VARCHAR}, </if> <if test="lastmodifier != null"> #{lastmodifier,jdbcType=VARCHAR}, </if> <if test="countdate != null"> #{countdate,jdbcType=INTEGER}, </if> <if test="counttime != null"> #{counttime,jdbcType=INTEGER}, </if> <if test="countstu != null"> #{countstu,jdbcType=INTEGER}, </if> <if test="sketchtype != null"> #{sketchtype,jdbcType=INTEGER}, </if> <if test="coursestyle != null"> #{coursestyle,jdbcType=INTEGER}, </if> <if test="classtype != null"> #{classtype,jdbcType=INTEGER}, </if> <if test="process != null"> #{process,jdbcType=INTEGER}, </if> <if test="coursestatus != null"> #{coursestatus,jdbcType=INTEGER}, </if> <if test="pay != null"> #{pay,jdbcType=VARCHAR}, </if> <if test="perpay != null"> #{perpay,jdbcType=VARCHAR}, </if> <if test="couponpay != null"> #{couponpay,jdbcType=VARCHAR}, </if> <if test="originalpay != null"> #{originalpay,jdbcType=VARCHAR}, </if> <if test="couponrule != null"> #{couponrule,jdbcType=INTEGER}, </if> <if test="begindate != null"> #{begindate,jdbcType=BIGINT}, </if> <if test="enddate != null"> #{enddate,jdbcType=BIGINT}, </if> <if test="coursenum != null"> #{coursenum,jdbcType=INTEGER}, </if> <if test="hasnum != null"> #{hasnum,jdbcType=INTEGER}, </if> <if test="cancelnum != null"> #{cancelnum,jdbcType=INTEGER}, </if> <if test="coursenuminput != null"> #{coursenuminput,jdbcType=INTEGER}, </if> <if test="ordernum != null"> #{ordernum,jdbcType=INTEGER}, </if> <if test="fav != null"> #{fav,jdbcType=BIGINT}, </if> <if test="viplevel != null"> #{viplevel,jdbcType=INTEGER}, </if> <if test="cancelreason != null"> #{cancelreason,jdbcType=INTEGER}, </if> <if test="createdate != null"> #{createdate,jdbcType=BIGINT}, </if> <if test="lastmoddate != null"> #{lastmoddate,jdbcType=BIGINT}, </if> <if test="formatter != null"> #{formatter,jdbcType=VARCHAR}, </if> <if test="status != null"> #{status,jdbcType=TINYINT}, </if> </trim> </insert> <update id="updateByPrimaryKeySelective" parameterType="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> update qfd_sketch <set> <if test="coursename != null"> courseName = #{coursename,jdbcType=VARCHAR}, </if> <if test="coursereq != null"> courseReq = #{coursereq,jdbcType=VARCHAR}, </if> <if test="teaid != null"> teaId = #{teaid,jdbcType=VARCHAR}, </if> <if test="teaname != null"> teaName = #{teaname,jdbcType=VARCHAR}, </if> <if test="stuid != null"> stuId = #{stuid,jdbcType=VARCHAR}, </if> <if test="stuname != null"> stuName = #{stuname,jdbcType=VARCHAR}, </if> <if test="stuphone != null"> stuPhone = #{stuphone,jdbcType=VARCHAR}, </if> <if test="textbookid != null"> textbookId = #{textbookid,jdbcType=BIGINT}, </if> <if test="creator != null"> creator = #{creator,jdbcType=VARCHAR}, </if> <if test="lastmodifier != null"> lastModifier = #{lastmodifier,jdbcType=VARCHAR}, </if> <if test="countdate != null"> countDate = #{countdate,jdbcType=INTEGER}, </if> <if test="counttime != null"> countTime = #{counttime,jdbcType=INTEGER}, </if> <if test="countstu != null"> countStu = #{countstu,jdbcType=INTEGER}, </if> <if test="sketchtype != null"> sketchType = #{sketchtype,jdbcType=INTEGER}, </if> <if test="coursestyle != null"> courseStyle = #{coursestyle,jdbcType=INTEGER}, </if> <if test="classtype != null"> classType = #{classtype,jdbcType=INTEGER}, </if> <if test="process != null"> process = #{process,jdbcType=INTEGER}, </if> <if test="coursestatus != null"> courseStatus = #{coursestatus,jdbcType=INTEGER}, </if> <if test="pay != null"> pay = #{pay,jdbcType=VARCHAR}, </if> <if test="perpay != null"> perPay = #{perpay,jdbcType=VARCHAR}, </if> <if test="couponpay != null"> couponPay = #{couponpay,jdbcType=VARCHAR}, </if> <if test="originalpay != null"> originalPay = #{originalpay,jdbcType=VARCHAR}, </if> <if test="couponrule != null"> couponRule = #{couponrule,jdbcType=INTEGER}, </if> <if test="begindate != null"> beginDate = #{begindate,jdbcType=BIGINT}, </if> <if test="enddate != null"> endDate = #{enddate,jdbcType=BIGINT}, </if> <if test="coursenum != null"> courseNum = #{coursenum,jdbcType=INTEGER}, </if> <if test="hasnum != null"> hasNum = #{hasnum,jdbcType=INTEGER}, </if> <if test="cancelnum != null"> cancelNum = #{cancelnum,jdbcType=INTEGER}, </if> <if test="coursenuminput != null"> courseNumInput = #{coursenuminput,jdbcType=INTEGER}, </if> <if test="ordernum != null"> orderNum = #{ordernum,jdbcType=INTEGER}, </if> <if test="fav != null"> fav = #{fav,jdbcType=BIGINT}, </if> <if test="viplevel != null"> vipLevel = #{viplevel,jdbcType=INTEGER}, </if> <if test="cancelreason != null"> cancelReason = #{cancelreason,jdbcType=INTEGER}, </if> <if test="createdate != null"> createDate = #{createdate,jdbcType=BIGINT}, </if> <if test="lastmoddate != null"> lastModDate = #{lastmoddate,jdbcType=BIGINT}, </if> <if test="formatter != null"> formatter = #{formatter,jdbcType=VARCHAR}, </if> <if test="status != null"> status = #{status,jdbcType=TINYINT}, </if> </set> where id = #{id,jdbcType=BIGINT} </update> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> delete from qfd_sketch where id = #{id,jdbcType=BIGINT} </delete></mapper>
6.可以通过上面的修改后文件可以看到已经实现了我们的要求,但是sql id还是不满足我们的要求,应该改成纯粹的insert,update,delete
找到IntrospectedTable.java类的calculateXmlAttributes()方法,可以看到很多的setxxx方法带了具体的字符串参数,这个就是对应sql文件里面的sql id我们把对应的改改
protected void calculateXmlAttributes() { setIbatis2SqlMapPackage(calculateSqlMapPackage()); setIbatis2SqlMapFileName(calculateIbatis2SqlMapFileName()); setMyBatis3XmlMapperFileName(calculateMyBatis3XmlMapperFileName()); setMyBatis3XmlMapperPackage(calculateSqlMapPackage()); setIbatis2SqlMapNamespace(calculateIbatis2SqlMapNamespace()); setMyBatis3FallbackSqlMapNamespace(calculateMyBatis3FallbackSqlMapNamespace()); setSqlMapFullyQualifiedRuntimeTableName(calculateSqlMapFullyQualifiedRuntimeTableName()); setSqlMapAliasedFullyQualifiedRuntimeTableName(calculateSqlMapAliasedFullyQualifiedRuntimeTableName()); setCountByExampleStatementId("countByExample"); //$NON-NLS-1$ setDeleteByExampleStatementId("deleteByExample"); //$NON-NLS-1$ setDeleteByPrimaryKeyStatementId("deleteByPrimaryKey"); //$NON-NLS-1$ setInsertStatementId("insert"); //$NON-NLS-1$ setInsertSelectiveStatementId("insertSelective"); //$NON-NLS-1$ setSelectAllStatementId("selectAll"); //$NON-NLS-1$ setSelectByExampleStatementId("selectByExample"); //$NON-NLS-1$ setSelectByExampleWithBLOBsStatementId("selectByExampleWithBLOBs"); //$NON-NLS-1$ setSelectByPrimaryKeyStatementId("selectByPrimaryKey"); //$NON-NLS-1$ setUpdateByExampleStatementId("updateByExample"); //$NON-NLS-1$ setUpdateByExampleSelectiveStatementId("updateByExampleSelective"); //$NON-NLS-1$ setUpdateByExampleWithBLOBsStatementId("updateByExampleWithBLOBs"); //$NON-NLS-1$ setUpdateByPrimaryKeyStatementId("updateByPrimaryKey"); //$NON-NLS-1$ setUpdateByPrimaryKeySelectiveStatementId("updateByPrimaryKeySelective"); //$NON-NLS-1$ setUpdateByPrimaryKeyWithBLOBsStatementId("updateByPrimaryKeyWithBLOBs"); //$NON-NLS-1$ setBaseResultMapId("BaseResultMap"); //$NON-NLS-1$ setResultMapWithBLOBsId("ResultMapWithBLOBs"); //$NON-NLS-1$ setExampleWhereClauseId("Example_Where_Clause"); //$NON-NLS-1$ setBaseColumnListId("Base_Column_List"); //$NON-NLS-1$ setBlobColumnListId("Blob_Column_List"); //$NON-NLS-1$ setMyBatis3UpdateByExampleWhereClauseId("Update_By_Example_Where_Clause"); //$NON-NLS-1$ }
修改后方法
protected void calculateXmlAttributes() { setIbatis2SqlMapPackage(calculateSqlMapPackage()); setIbatis2SqlMapFileName(calculateIbatis2SqlMapFileName()); setMyBatis3XmlMapperFileName(calculateMyBatis3XmlMapperFileName()); setMyBatis3XmlMapperPackage(calculateSqlMapPackage()); setIbatis2SqlMapNamespace(calculateIbatis2SqlMapNamespace()); setMyBatis3FallbackSqlMapNamespace(calculateMyBatis3FallbackSqlMapNamespace()); setSqlMapFullyQualifiedRuntimeTableName(calculateSqlMapFullyQualifiedRuntimeTableName()); setSqlMapAliasedFullyQualifiedRuntimeTableName(calculateSqlMapAliasedFullyQualifiedRuntimeTableName()); setCountByExampleStatementId("countByExample"); //$NON-NLS-1$ setDeleteByExampleStatementId("deleteByExample"); //$NON-NLS-1$ // setDeleteByPrimaryKeyStatementId("deleteByPrimaryKey"); //$NON-NLS-1$ setDeleteByPrimaryKeyStatementId("delete"); // deleteByPrimaryKey改成delete setInsertStatementId("insert"); //$NON-NLS-1$ // setInsertSelectiveStatementId("insertSelective"); //$NON-NLS-1$ setInsertSelectiveStatementId("insert"); // insertSelective改成insert setSelectAllStatementId("selectAll"); //$NON-NLS-1$ setSelectByExampleStatementId("selectByExample"); //$NON-NLS-1$ setSelectByExampleWithBLOBsStatementId("selectByExampleWithBLOBs"); //$NON-NLS-1$ setSelectByPrimaryKeyStatementId("selectByPrimaryKey"); //$NON-NLS-1$ setUpdateByExampleStatementId("updateByExample"); //$NON-NLS-1$ setUpdateByExampleSelectiveStatementId("updateByExampleSelective"); //$NON-NLS-1$ setUpdateByExampleWithBLOBsStatementId("updateByExampleWithBLOBs"); //$NON-NLS-1$ setUpdateByPrimaryKeyStatementId("updateByPrimaryKey"); //$NON-NLS-1$ // setUpdateByPrimaryKeySelectiveStatementId("updateByPrimaryKeySelective"); //$NON-NLS-1$ setUpdateByPrimaryKeySelectiveStatementId("update"); // updateByPrimaryKeySelective改成update setUpdateByPrimaryKeyWithBLOBsStatementId("updateByPrimaryKeyWithBLOBs"); //$NON-NLS-1$ setBaseResultMapId("BaseResultMap"); //$NON-NLS-1$ setResultMapWithBLOBsId("ResultMapWithBLOBs"); //$NON-NLS-1$ setExampleWhereClauseId("Example_Where_Clause"); //$NON-NLS-1$ setBaseColumnListId("Base_Column_List"); //$NON-NLS-1$ setBlobColumnListId("Blob_Column_List"); //$NON-NLS-1$ setMyBatis3UpdateByExampleWhereClauseId("Update_By_Example_Where_Clause"); //$NON-NLS-1$ }
7.修改方法后我们再重新生成文件看看效果
<?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.test.dao.QfdSketchMapper"> <resultMap id="BaseResultMap" type="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> <id column="id" jdbcType="BIGINT" property="id" /> <result column="courseName" jdbcType="VARCHAR" property="coursename" /> <result column="courseReq" jdbcType="VARCHAR" property="coursereq" /> <result column="teaId" jdbcType="VARCHAR" property="teaid" /> <result column="teaName" jdbcType="VARCHAR" property="teaname" /> <result column="stuId" jdbcType="VARCHAR" property="stuid" /> <result column="stuName" jdbcType="VARCHAR" property="stuname" /> <result column="stuPhone" jdbcType="VARCHAR" property="stuphone" /> <result column="textbookId" jdbcType="BIGINT" property="textbookid" /> <result column="creator" jdbcType="VARCHAR" property="creator" /> <result column="lastModifier" jdbcType="VARCHAR" property="lastmodifier" /> <result column="countDate" jdbcType="INTEGER" property="countdate" /> <result column="countTime" jdbcType="INTEGER" property="counttime" /> <result column="countStu" jdbcType="INTEGER" property="countstu" /> <result column="sketchType" jdbcType="INTEGER" property="sketchtype" /> <result column="courseStyle" jdbcType="INTEGER" property="coursestyle" /> <result column="classType" jdbcType="INTEGER" property="classtype" /> <result column="process" jdbcType="INTEGER" property="process" /> <result column="courseStatus" jdbcType="INTEGER" property="coursestatus" /> <result column="pay" jdbcType="VARCHAR" property="pay" /> <result column="perPay" jdbcType="VARCHAR" property="perpay" /> <result column="couponPay" jdbcType="VARCHAR" property="couponpay" /> <result column="originalPay" jdbcType="VARCHAR" property="originalpay" /> <result column="couponRule" jdbcType="INTEGER" property="couponrule" /> <result column="beginDate" jdbcType="BIGINT" property="begindate" /> <result column="endDate" jdbcType="BIGINT" property="enddate" /> <result column="courseNum" jdbcType="INTEGER" property="coursenum" /> <result column="hasNum" jdbcType="INTEGER" property="hasnum" /> <result column="cancelNum" jdbcType="INTEGER" property="cancelnum" /> <result column="courseNumInput" jdbcType="INTEGER" property="coursenuminput" /> <result column="orderNum" jdbcType="INTEGER" property="ordernum" /> <result column="fav" jdbcType="BIGINT" property="fav" /> <result column="vipLevel" jdbcType="INTEGER" property="viplevel" /> <result column="cancelReason" jdbcType="INTEGER" property="cancelreason" /> <result column="createDate" jdbcType="BIGINT" property="createdate" /> <result column="lastModDate" jdbcType="BIGINT" property="lastmoddate" /> <result column="formatter" jdbcType="VARCHAR" property="formatter" /> <result column="status" jdbcType="TINYINT" property="status" /> </resultMap> <sql id="Base_Column_List"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> id, courseName, courseReq, teaId, teaName, stuId, stuName, stuPhone, textbookId, creator, lastModifier, countDate, countTime, countStu, sketchType, courseStyle, classType, process, courseStatus, pay, perPay, couponPay, originalPay, couponRule, beginDate, endDate, courseNum, hasNum, cancelNum, courseNumInput, orderNum, fav, vipLevel, cancelReason, createDate, lastModDate, formatter, status </sql> <insert id="insert" parameterType="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> insert into qfd_sketch <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="coursename != null"> courseName, </if> <if test="coursereq != null"> courseReq, </if> <if test="teaid != null"> teaId, </if> <if test="teaname != null"> teaName, </if> <if test="stuid != null"> stuId, </if> <if test="stuname != null"> stuName, </if> <if test="stuphone != null"> stuPhone, </if> <if test="textbookid != null"> textbookId, </if> <if test="creator != null"> creator, </if> <if test="lastmodifier != null"> lastModifier, </if> <if test="countdate != null"> countDate, </if> <if test="counttime != null"> countTime, </if> <if test="countstu != null"> countStu, </if> <if test="sketchtype != null"> sketchType, </if> <if test="coursestyle != null"> courseStyle, </if> <if test="classtype != null"> classType, </if> <if test="process != null"> process, </if> <if test="coursestatus != null"> courseStatus, </if> <if test="pay != null"> pay, </if> <if test="perpay != null"> perPay, </if> <if test="couponpay != null"> couponPay, </if> <if test="originalpay != null"> originalPay, </if> <if test="couponrule != null"> couponRule, </if> <if test="begindate != null"> beginDate, </if> <if test="enddate != null"> endDate, </if> <if test="coursenum != null"> courseNum, </if> <if test="hasnum != null"> hasNum, </if> <if test="cancelnum != null"> cancelNum, </if> <if test="coursenuminput != null"> courseNumInput, </if> <if test="ordernum != null"> orderNum, </if> <if test="fav != null"> fav, </if> <if test="viplevel != null"> vipLevel, </if> <if test="cancelreason != null"> cancelReason, </if> <if test="createdate != null"> createDate, </if> <if test="lastmoddate != null"> lastModDate, </if> <if test="formatter != null"> formatter, </if> <if test="status != null"> status, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=BIGINT}, </if> <if test="coursename != null"> #{coursename,jdbcType=VARCHAR}, </if> <if test="coursereq != null"> #{coursereq,jdbcType=VARCHAR}, </if> <if test="teaid != null"> #{teaid,jdbcType=VARCHAR}, </if> <if test="teaname != null"> #{teaname,jdbcType=VARCHAR}, </if> <if test="stuid != null"> #{stuid,jdbcType=VARCHAR}, </if> <if test="stuname != null"> #{stuname,jdbcType=VARCHAR}, </if> <if test="stuphone != null"> #{stuphone,jdbcType=VARCHAR}, </if> <if test="textbookid != null"> #{textbookid,jdbcType=BIGINT}, </if> <if test="creator != null"> #{creator,jdbcType=VARCHAR}, </if> <if test="lastmodifier != null"> #{lastmodifier,jdbcType=VARCHAR}, </if> <if test="countdate != null"> #{countdate,jdbcType=INTEGER}, </if> <if test="counttime != null"> #{counttime,jdbcType=INTEGER}, </if> <if test="countstu != null"> #{countstu,jdbcType=INTEGER}, </if> <if test="sketchtype != null"> #{sketchtype,jdbcType=INTEGER}, </if> <if test="coursestyle != null"> #{coursestyle,jdbcType=INTEGER}, </if> <if test="classtype != null"> #{classtype,jdbcType=INTEGER}, </if> <if test="process != null"> #{process,jdbcType=INTEGER}, </if> <if test="coursestatus != null"> #{coursestatus,jdbcType=INTEGER}, </if> <if test="pay != null"> #{pay,jdbcType=VARCHAR}, </if> <if test="perpay != null"> #{perpay,jdbcType=VARCHAR}, </if> <if test="couponpay != null"> #{couponpay,jdbcType=VARCHAR}, </if> <if test="originalpay != null"> #{originalpay,jdbcType=VARCHAR}, </if> <if test="couponrule != null"> #{couponrule,jdbcType=INTEGER}, </if> <if test="begindate != null"> #{begindate,jdbcType=BIGINT}, </if> <if test="enddate != null"> #{enddate,jdbcType=BIGINT}, </if> <if test="coursenum != null"> #{coursenum,jdbcType=INTEGER}, </if> <if test="hasnum != null"> #{hasnum,jdbcType=INTEGER}, </if> <if test="cancelnum != null"> #{cancelnum,jdbcType=INTEGER}, </if> <if test="coursenuminput != null"> #{coursenuminput,jdbcType=INTEGER}, </if> <if test="ordernum != null"> #{ordernum,jdbcType=INTEGER}, </if> <if test="fav != null"> #{fav,jdbcType=BIGINT}, </if> <if test="viplevel != null"> #{viplevel,jdbcType=INTEGER}, </if> <if test="cancelreason != null"> #{cancelreason,jdbcType=INTEGER}, </if> <if test="createdate != null"> #{createdate,jdbcType=BIGINT}, </if> <if test="lastmoddate != null"> #{lastmoddate,jdbcType=BIGINT}, </if> <if test="formatter != null"> #{formatter,jdbcType=VARCHAR}, </if> <if test="status != null"> #{status,jdbcType=TINYINT}, </if> </trim> </insert> <update id="update" parameterType="com.test.domain.QfdSketch"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> update qfd_sketch <set> <if test="coursename != null"> courseName = #{coursename,jdbcType=VARCHAR}, </if> <if test="coursereq != null"> courseReq = #{coursereq,jdbcType=VARCHAR}, </if> <if test="teaid != null"> teaId = #{teaid,jdbcType=VARCHAR}, </if> <if test="teaname != null"> teaName = #{teaname,jdbcType=VARCHAR}, </if> <if test="stuid != null"> stuId = #{stuid,jdbcType=VARCHAR}, </if> <if test="stuname != null"> stuName = #{stuname,jdbcType=VARCHAR}, </if> <if test="stuphone != null"> stuPhone = #{stuphone,jdbcType=VARCHAR}, </if> <if test="textbookid != null"> textbookId = #{textbookid,jdbcType=BIGINT}, </if> <if test="creator != null"> creator = #{creator,jdbcType=VARCHAR}, </if> <if test="lastmodifier != null"> lastModifier = #{lastmodifier,jdbcType=VARCHAR}, </if> <if test="countdate != null"> countDate = #{countdate,jdbcType=INTEGER}, </if> <if test="counttime != null"> countTime = #{counttime,jdbcType=INTEGER}, </if> <if test="countstu != null"> countStu = #{countstu,jdbcType=INTEGER}, </if> <if test="sketchtype != null"> sketchType = #{sketchtype,jdbcType=INTEGER}, </if> <if test="coursestyle != null"> courseStyle = #{coursestyle,jdbcType=INTEGER}, </if> <if test="classtype != null"> classType = #{classtype,jdbcType=INTEGER}, </if> <if test="process != null"> process = #{process,jdbcType=INTEGER}, </if> <if test="coursestatus != null"> courseStatus = #{coursestatus,jdbcType=INTEGER}, </if> <if test="pay != null"> pay = #{pay,jdbcType=VARCHAR}, </if> <if test="perpay != null"> perPay = #{perpay,jdbcType=VARCHAR}, </if> <if test="couponpay != null"> couponPay = #{couponpay,jdbcType=VARCHAR}, </if> <if test="originalpay != null"> originalPay = #{originalpay,jdbcType=VARCHAR}, </if> <if test="couponrule != null"> couponRule = #{couponrule,jdbcType=INTEGER}, </if> <if test="begindate != null"> beginDate = #{begindate,jdbcType=BIGINT}, </if> <if test="enddate != null"> endDate = #{enddate,jdbcType=BIGINT}, </if> <if test="coursenum != null"> courseNum = #{coursenum,jdbcType=INTEGER}, </if> <if test="hasnum != null"> hasNum = #{hasnum,jdbcType=INTEGER}, </if> <if test="cancelnum != null"> cancelNum = #{cancelnum,jdbcType=INTEGER}, </if> <if test="coursenuminput != null"> courseNumInput = #{coursenuminput,jdbcType=INTEGER}, </if> <if test="ordernum != null"> orderNum = #{ordernum,jdbcType=INTEGER}, </if> <if test="fav != null"> fav = #{fav,jdbcType=BIGINT}, </if> <if test="viplevel != null"> vipLevel = #{viplevel,jdbcType=INTEGER}, </if> <if test="cancelreason != null"> cancelReason = #{cancelreason,jdbcType=INTEGER}, </if> <if test="createdate != null"> createDate = #{createdate,jdbcType=BIGINT}, </if> <if test="lastmoddate != null"> lastModDate = #{lastmoddate,jdbcType=BIGINT}, </if> <if test="formatter != null"> formatter = #{formatter,jdbcType=VARCHAR}, </if> <if test="status != null"> status = #{status,jdbcType=TINYINT}, </if> </set> where id = #{id,jdbcType=BIGINT} </update> <delete id="delete" parameterType="java.lang.Long"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> delete from qfd_sketch where id = #{id,jdbcType=BIGINT} </delete></mapper>
8.已经改成比较符合我们规范和使用的xml文件了,看着很让人舒服不别扭;小结:这些修改代码都是源码生成器必经的逻辑,所以有兴趣继续改造的同学可以继续断点查看并按自己的习惯修改,我只是大概讲了那些部分都是关键地方,下一篇我应该会讲解如何增加自定义sql了,大家有兴趣继续学习的请不要错过咯,再次谢谢大家的支持
- mybatis-generator扩展教程系列 -- 自定义sql xml文件
- mybatis-generator扩展教程系列 -- mapper xml文件增加自定义sql
- mybatis-generator扩展教程系列 -- 自定义generatorConfig.xml参数
- mybatis-generator扩展教程系列 -- 自定义配置参数修改DAO,Mapper文件后缀
- mybatis generator mapper.xml扩展
- mybatis-generator扩展-自定义代码注释
- mybatis-generator扩展教程系列 -- 搭建MBG源码项目(入门铺垫篇)
- 扩展mybatis generator
- mybatis generator dao扩展
- MyBatis Generator系列(八)----MyBatis Generator自定义插件实现自定义Mapper
- generator.xml文件自动生成mybatis的xml配置
- MyBatis Generator系列(二)----自定义CommentGenerator实现中文注释
- mybatis generator.xml 配置
- mybatis-generator使用教程
- MyBatis Generator系列(一)----MyBatis Generator简介
- 自定义MyBatis Generator Plugin
- mybatis generator的使用及自定义sql最佳实践
- 使用MyBatis Generator自动创建表对应的dao层接口、模型层对象、sql语句的xml文件
- 【44.64%】【codeforces 743C】Vladik and fractions
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- 区块链
- http调用webservice
- BlockingQueue深入分析
- mybatis-generator扩展教程系列 -- 自定义sql xml文件
- window.history.back()用法
- 信息工程学院技能大赛 计算机程序设计(Java)大赛试题
- 9 个用于移动APP开发的顶级 JavaScript 框架
- iOS---开发者账号团队邀请成员/管理员
- Android重温
- 第16周 课后实践-2学生成绩处理(1)
- 使用SAX读取XML文件--(SAX的基础语法练习)
- iPhone像素点和常用控件尺寸