iBATIS代码生成分析
1.分析目录结构“tools”(或者说模板)
2.首先分析ibatorConfig.xml文件

- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE ibatorConfiguration PUBLIC "-//Apache Software Foundation//DTD Apache iBATIS Ibator Configuration 1.0//EN" "http://ibatis.apache.org/dtd/ibator-config_1_0.dtd" >
- <ibatorConfiguration>
- <classPathEntry
- location="F:\sqljdbc.jar" />
- <ibatorContext id="context1" targetRuntime="Ibatis2Java5">
- <!--
- classPathEntry 指定数据库jdbc驱动jar包的绝对路径。
- -->
- <!--
- id 这个id可以在使用命令行运行Abator时指定,以单独处理某一个ibatorContext targetRuntime
- Ibatis2Java5 生成适合JDK5.0的类,另一个选项是 Ibatis2Java2,生成适合Java2的类。
- -->
- <ibatorPlugin
- type="org.apache.ibatis.ibator.plugins.RenameExampleClassPlugin">
- <property name="searchString" value="Example$" />
- <property name="replaceString" value="Example" />
- </ibatorPlugin>
- <!--
- ibatorPlugin 继承自IbatorPluginAdapter,包名必须是
- org.apache.ibatis.ibator.plugins,具体实现可以参考官方文档 必须有替换和被替换字符属性。
- -->
- <!--
- <jdbcConnection driverClass="org.postgresql.Driver"
- connectionURL="jdbc:postgresql://127.0.0.1:5432/hibernateTest" userId="postgres"
- password="postgres" />
- -->
- <jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
- connectionURL="jdbc:sqlserver://127.0.0.1:1433;databaseName=PanaDatabase" userId="sa"
- password="sasa" />
- <!--
- driverClass 数据库驱动类 connectionURL 数据库连接地址 userId 用户 password 密码
- 还可以使用以下格式添加数据库的其他连接属性 <property name="" value=""/>
- -->
- <javaTypeResolver>
- <property name="forceBigDecimals" value="false" />
- <!--
- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和
- NUMERIC 类型解析为java.math.BigDecimal
- -->
- </javaTypeResolver>
- <javaModelGenerator targetPackage="abator.model"
- targetProject="comboFramework/tools" />
- <!--
- targetProject 生成的Java Bean放置在哪个项目的哪个目录下 targetPackage 生成的Java Bean的包名
- 一个有用的属性 <property name="trimStrings" value="true" /> 从数据库返回的值被清理前后的空格
- <property name="enableSubPackages" value="false" /> 是否在包名后加上scheme名称
- -->
- <sqlMapGenerator targetPackage="abator.sqlmap"
- targetProject="comboFramework/tools" />
- <!--
- targetProject 生成的 SqlMap.xml 文件放置在哪个项目的哪个目录下 targetPackage 生成的
- SqlMap.xml 文件的包名 <property name="enableSubPackages" value="false" />
- 是否在包名后加上scheme名称
- -->
- <daoGenerator targetPackage="abator.dao" targetProject="comboFramework/tools"
- type="GENERIC-CI" />
- <table tableName="InfoVoteItm"></table>
- </ibatorContext>
- </ibatorConfiguration>

需要注意的几点是
1.指向的jdbc包是否正确或存在
- <classPathEntry
- location="F:\sqljdbc.jar" />
- <ibatorContext id="context1" targetRuntime="Ibatis2Java5">
2.数据库连接是否配置正确
- <jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
- connectionURL="jdbc:sqlserver://127.0.0.1:1433;databaseName=PanaDatabase" userId="sa"
- password="sasa" />
3.指向的模板工具是否正确

- <!--
- targetProject 生成的Java Bean放置在哪个项目的哪个目录下 targetPackage 生成的Java Bean的包名
- 一个有用的属性 <property name="trimStrings" value="true" /> 从数据库返回的值被清理前后的空格
- <property name="enableSubPackages" value="false" /> 是否在包名后加上scheme名称
- -->
- <sqlMapGenerator targetPackage="abator.sqlmap"
- targetProject="comboFramework/tools" />
- <!--
- targetProject 生成的 SqlMap.xml 文件放置在哪个项目的哪个目录下 targetPackage 生成的
- SqlMap.xml 文件的包名 <property name="enableSubPackages" value="false" />
- 是否在包名后加上scheme名称
- -->
- <daoGenerator targetPackage="abator.dao" targetProject="comboFramework/tools"
- type="GENERIC-CI" />

4.指向需要生成的表
- <table tableName="InfoVoteItm"></table>
这里是单表(还没试过多个表一起生成呢,可以试试)
最终生成的结果如图
可以看出对iBATIS对表InfoVoteItm生成了三个模块即"sqlmap","model","dao"。
现在我们一个一个的来分析这三个部分。
在分析之前了解下InfoVoteItm表的结构

- USE [PanaDatabase]
- GO
- /****** 对象: Table [dbo].[InfoVoteItm] 脚本日期: 06/04/2012 16:22:55 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [dbo].[InfoVoteItm](
- [EmpID] [nvarchar](250) COLLATE Chinese_PRC_CI_AS NULL,
- [InfoDetail_ID] [int] NULL,
- [VoteItmDate] [datetime] NULL CONSTRAINT [DF_InfoVoteItm_VoteItmDate] DEFAULT (getdate())
- ) ON [PRIMARY]

A.首先我们来分析"sqlmap"这一部分对InfoVoteItm表生成的文件InfoVoteItm_SqlMap.xml

- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
- <sqlMap namespace="InfoVoteItm" >
- <resultMap id="ibatorgenerated_BaseResultMap" class="abator.model.Infovoteitm" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- <result column="EmpID" property="empid" jdbcType="VARCHAR" />
- <result column="InfoDetail_ID" property="infodetailId" jdbcType="INTEGER" />
- <result column="VoteItmDate" property="voteitmdate" jdbcType="TIMESTAMP" />
- </resultMap>
- <sql id="ibatorgenerated_Example_Where_Clause" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- <iterate property="oredCriteria" conjunction="or" prepend="where" removeFirstPrepend="iterate" >
- <isEqual property="oredCriteria[].valid" compareValue="true" >
- (
- <iterate prepend="and" property="oredCriteria[].criteriaWithoutValue" conjunction="and" >
- $oredCriteria[].criteriaWithoutValue[]$
- </iterate>
- <iterate prepend="and" property="oredCriteria[].criteriaWithSingleValue" conjunction="and" >
- $oredCriteria[].criteriaWithSingleValue[].condition$
- #oredCriteria[].criteriaWithSingleValue[].value#
- </iterate>
- <iterate prepend="and" property="oredCriteria[].criteriaWithListValue" conjunction="and" >
- $oredCriteria[].criteriaWithListValue[].condition$
- <iterate property="oredCriteria[].criteriaWithListValue[].values" open="(" close=")" conjunction="," >
- #oredCriteria[].criteriaWithListValue[].values[]#
- </iterate>
- </iterate>
- <iterate prepend="and" property="oredCriteria[].criteriaWithBetweenValue" conjunction="and" >
- $oredCriteria[].criteriaWithBetweenValue[].condition$
- #oredCriteria[].criteriaWithBetweenValue[].values[0]# and
- #oredCriteria[].criteriaWithBetweenValue[].values[1]#
- </iterate>
- )
- </isEqual>
- </iterate>
- </sql>
- <select id="ibatorgenerated_selectByExample" resultMap="ibatorgenerated_BaseResultMap" parameterClass="abator.model.InfovoteitmExample" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- select EmpID, InfoDetail_ID, VoteItmDate
- from InfoVoteItm
- <isParameterPresent >
- <include refid="InfoVoteItm.ibatorgenerated_Example_Where_Clause" />
- <isNotNull property="orderByClause" >
- order by $orderByClause$
- </isNotNull>
- </isParameterPresent>
- </select>
- <delete id="ibatorgenerated_deleteByExample" parameterClass="abator.model.InfovoteitmExample" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- delete from InfoVoteItm
- <include refid="InfoVoteItm.ibatorgenerated_Example_Where_Clause" />
- </delete>
- <insert id="ibatorgenerated_insert" parameterClass="abator.model.Infovoteitm" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- insert into InfoVoteItm (EmpID, InfoDetail_ID, VoteItmDate)
- values (#empid:VARCHAR#, #infodetailId:INTEGER#, #voteitmdate:TIMESTAMP#)
- </insert>
- <insert id="ibatorgenerated_insertSelective" parameterClass="abator.model.Infovoteitm" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- insert into InfoVoteItm
- <dynamic prepend="(" >
- <isNotNull prepend="," property="empid" >
- EmpID
- </isNotNull>
- <isNotNull prepend="," property="infodetailId" >
- InfoDetail_ID
- </isNotNull>
- <isNotNull prepend="," property="voteitmdate" >
- VoteItmDate
- </isNotNull>
- )
- </dynamic>
- values
- <dynamic prepend="(" >
- <isNotNull prepend="," property="empid" >
- #empid:VARCHAR#
- </isNotNull>
- <isNotNull prepend="," property="infodetailId" >
- #infodetailId:INTEGER#
- </isNotNull>
- <isNotNull prepend="," property="voteitmdate" >
- #voteitmdate:TIMESTAMP#
- </isNotNull>
- )
- </dynamic>
- </insert>
- <select id="ibatorgenerated_countByExample" parameterClass="abator.model.InfovoteitmExample" resultClass="java.lang.Integer" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- select count(*) from InfoVoteItm
- <include refid="InfoVoteItm.ibatorgenerated_Example_Where_Clause" />
- </select>
- <update id="ibatorgenerated_updateByExampleSelective" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- update InfoVoteItm
- <dynamic prepend="set" >
- <isNotNull prepend="," property="record.empid" >
- EmpID = #record.empid:VARCHAR#
- </isNotNull>
- <isNotNull prepend="," property="record.infodetailId" >
- InfoDetail_ID = #record.infodetailId:INTEGER#
- </isNotNull>
- <isNotNull prepend="," property="record.voteitmdate" >
- VoteItmDate = #record.voteitmdate:TIMESTAMP#
- </isNotNull>
- </dynamic>
- <isParameterPresent >
- <include refid="InfoVoteItm.ibatorgenerated_Example_Where_Clause" />
- </isParameterPresent>
- </update>
- <update id="ibatorgenerated_updateByExample" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- update InfoVoteItm
- set EmpID = #record.empid:VARCHAR#,
- InfoDetail_ID = #record.infodetailId:INTEGER#,
- VoteItmDate = #record.voteitmdate:TIMESTAMP#
- <isParameterPresent >
- <include refid="InfoVoteItm.ibatorgenerated_Example_Where_Clause" />
- </isParameterPresent>
- </update>
- </sqlMap>

可以看出对表InfoVoteItm做了实体映射(实现增加add,删除delete,修改update,查询select)
首先分析下映射实体类

- <resultMap id="ibatorgenerated_BaseResultMap" class="abator.model.Infovoteitm" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- <result column="EmpID" property="empid" jdbcType="VARCHAR" />
- <result column="InfoDetail_ID" property="infodetailId" jdbcType="INTEGER" />
- <result column="VoteItmDate" property="voteitmdate" jdbcType="TIMESTAMP" />
- </resultMap>

其中"id"起标识的作用,"class"映射由iBATIS生成的实体类(路径指向,若要移动该文件此处要及得修改)
"column"可以随意定义但前提是实体类中有相匹配的字段即"property","jdbcType"设置字段属性(属性与数据库字段类型相同)
查询(可以看出resultMap是对实体类的一种映射,如果查询select中的字段在实体类中未定义则会出现异常,parameterClass指向的是参数需要注意与class的区别)

- <select id="ibatorgenerated_selectByExample" resultMap="ibatorgenerated_BaseResultMap" parameterClass="abator.model.InfovoteitmExample" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- select EmpID, InfoDetail_ID, VoteItmDate
- from InfoVoteItm
- <isParameterPresent >
- <include refid="InfoVoteItm.ibatorgenerated_Example_Where_Clause" />
- <isNotNull property="orderByClause" >
- order by $orderByClause$
- </isNotNull>
- </isParameterPresent>
- </select>

查询返回结果值

- <select id="ibatorgenerated_countByExample" parameterClass="abator.model.InfovoteitmExample" resultClass="java.lang.Integer" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- select count(*) from InfoVoteItm
- <include refid="InfoVoteItm.ibatorgenerated_Example_Where_Clause" />
- </select>

删除

- <delete id="ibatorgenerated_deleteByExample" parameterClass="abator.model.InfovoteitmExample" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- delete from InfoVoteItm
- <include refid="InfoVoteItm.ibatorgenerated_Example_Where_Clause" />
- </delete>

添加
1.添加所有项

- <insert id="ibatorgenerated_insert" parameterClass="abator.model.Infovoteitm" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- insert into InfoVoteItm (EmpID, InfoDetail_ID, VoteItmDate)
- values (#empid:VARCHAR#, #infodetailId:INTEGER#, #voteitmdate:TIMESTAMP#)
- </insert>

2.选择性添加

- <insert id="ibatorgenerated_insertSelective" parameterClass="abator.model.Infovoteitm" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- insert into InfoVoteItm
- <dynamic prepend="(" >
- <isNotNull prepend="," property="empid" >
- EmpID
- </isNotNull>
- <isNotNull prepend="," property="infodetailId" >
- InfoDetail_ID
- </isNotNull>
- <isNotNull prepend="," property="voteitmdate" >
- VoteItmDate
- </isNotNull>
- )
- </dynamic>
- values
- <dynamic prepend="(" >
- <isNotNull prepend="," property="empid" >
- #empid:VARCHAR#
- </isNotNull>
- <isNotNull prepend="," property="infodetailId" >
- #infodetailId:INTEGER#
- </isNotNull>
- <isNotNull prepend="," property="voteitmdate" >
- #voteitmdate:TIMESTAMP#
- </isNotNull>
- )
- </dynamic>
- </insert>

变更
1.选择性变更(条件可选)

- <update id="ibatorgenerated_updateByExampleSelective" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- update InfoVoteItm
- <dynamic prepend="set" >
- <isNotNull prepend="," property="record.empid" >
- EmpID = #record.empid:VARCHAR#
- </isNotNull>
- <isNotNull prepend="," property="record.infodetailId" >
- InfoDetail_ID = #record.infodetailId:INTEGER#
- </isNotNull>
- <isNotNull prepend="," property="record.voteitmdate" >
- VoteItmDate = #record.voteitmdate:TIMESTAMP#
- </isNotNull>
- </dynamic>
- <isParameterPresent >
- <include refid="InfoVoteItm.ibatorgenerated_Example_Where_Clause" />
- </isParameterPresent>
- </update>

2.条件必须

- <update id="ibatorgenerated_updateByExample" >
- <!--
- WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify.
- This element was generated on Wed Mar 09 16:57:25 CST 2011.
- -->
- update InfoVoteItm
- set EmpID = #record.empid:VARCHAR#,
- InfoDetail_ID = #record.infodetailId:INTEGER#,
- VoteItmDate = #record.voteitmdate:TIMESTAMP#
- <isParameterPresent >
- <include refid="InfoVoteItm.ibatorgenerated_Example_Where_Clause" />
- </isParameterPresent>
- </update>

"model"是对实体类的封装就不说了,看下"dao"层。
"dao"层生成了两个文件InfovoteitmDAO是接口类对方法的声明(包括增,删,改,查)而InfovoteitmDAOImpl是类是对InfovoteitmDAO接口方法的
实现。
- InfovoteitmDAO 接口

- package abator.dao;
- import abator.model.Infovoteitm;
- import abator.model.InfovoteitmExample;
- import java.sql.SQLException;
- import java.util.List;
- public interface InfovoteitmDAO {
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- int countByExample(InfovoteitmExample example) throws SQLException;
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- int deleteByExample(InfovoteitmExample example) throws SQLException;
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- void insert(Infovoteitm record) throws SQLException;
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- void insertSelective(Infovoteitm record) throws SQLException;
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- List<Infovoteitm> selectByExample(InfovoteitmExample example) throws SQLException;
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- int updateByExampleSelective(Infovoteitm record, InfovoteitmExample example) throws SQLException;
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- int updateByExample(Infovoteitm record, InfovoteitmExample example) throws SQLException;
- }

InfovoteitmDAOImpl类

- package abator.dao;
- import abator.model.Infovoteitm;
- import abator.model.InfovoteitmExample;
- import com.ibatis.sqlmap.client.SqlMapClient;
- import java.sql.SQLException;
- import java.util.List;
- public class InfovoteitmDAOImpl implements InfovoteitmDAO {
- /**
- * This field was generated by Apache iBATIS ibator.
- * This field corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- private SqlMapClient sqlMapClient;
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- public InfovoteitmDAOImpl(SqlMapClient sqlMapClient) {
- super();
- this.sqlMapClient = sqlMapClient;
- }
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- public int countByExample(InfovoteitmExample example) throws SQLException {
- Integer count = (Integer) sqlMapClient.queryForObject("InfoVoteItm.ibatorgenerated_countByExample", example);
- return count;
- }
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- public int deleteByExample(InfovoteitmExample example) throws SQLException {
- int rows = sqlMapClient.delete("InfoVoteItm.ibatorgenerated_deleteByExample", example);
- return rows;
- }
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- public void insert(Infovoteitm record) throws SQLException {
- sqlMapClient.insert("InfoVoteItm.ibatorgenerated_insert", record);
- }
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- public void insertSelective(Infovoteitm record) throws SQLException {
- sqlMapClient.insert("InfoVoteItm.ibatorgenerated_insertSelective", record);
- }
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- @SuppressWarnings("unchecked")
- public List<Infovoteitm> selectByExample(InfovoteitmExample example) throws SQLException {
- List<Infovoteitm> list = sqlMapClient.queryForList("InfoVoteItm.ibatorgenerated_selectByExample", example);
- return list;
- }
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- public int updateByExampleSelective(Infovoteitm record, InfovoteitmExample example) throws SQLException {
- UpdateByExampleParms parms = new UpdateByExampleParms(record, example);
- int rows = sqlMapClient.update("InfoVoteItm.ibatorgenerated_updateByExampleSelective", parms);
- return rows;
- }
- /**
- * This method was generated by Apache iBATIS ibator.
- * This method corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- public int updateByExample(Infovoteitm record, InfovoteitmExample example) throws SQLException {
- UpdateByExampleParms parms = new UpdateByExampleParms(record, example);
- int rows = sqlMapClient.update("InfoVoteItm.ibatorgenerated_updateByExample", parms);
- return rows;
- }
- /**
- * This class was generated by Apache iBATIS ibator.
- * This class corresponds to the database table InfoVoteItm
- *
- * @ibatorgenerated Wed Mar 09 16:57:25 CST 2011
- */
- private static class UpdateByExampleParms extends InfovoteitmExample {
- private Object record;
- public UpdateByExampleParms(Object record, InfovoteitmExample example) {
- super(example);
- this.record = record;
- }
- public Object getRecord() {
- return record;
- }
- }
- }
iBATIS代码生成分析的更多相关文章
- MyBatis源码分析(一)
MyBatis故事: 官方网站:http://www.mybatis.org 官方文档:http://www.mybatis.org/mybatis-3/ GitHub:https://github. ...
- 使用代码生成工具快速生成基于ABP框架的Vue+Element的前端界面
世界上唯一不变的东西就是变化,我们通过总结变化的规律,以规律来应付变化,一切事情处理起来事半功倍.我们在开发后端服务代码,前端界面代码的时候,界面都是依照一定的规律进行变化的,我们通过抽取数据库信息, ...
- Thrift之TProtocol系列TBinaryProtocol解析
首先看一下Thrift的整体架构,如下图: 如图所示,黄色部分是用户实现的业务逻辑,褐色部分是根据thrift定义的服务接口描述文件生成的客户端和服务器端代码框架(前篇2中已分析了thrift ser ...
- 框架学习:ibatis框架的结构和分析
由于最近一段时间比较忙碌,<框架学习>系列的文章一直在搁浅着,最近开始继续这个系列的文章更新. 在上篇文章中我们说到了hibernate框架,它是一种基于JDBC的主流持久化框架,是一个优 ...
- 【异常及源码分析】org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping
一.异常出现的场景 1)异常出现的SQL @Select("SELECT\n" + " id,discount_type ,min_charge, ${cardFee} ...
- [源码分析]从"UDF不应有状态" 切入来剖析Flink SQL代码生成 (修订版)
[源码分析]从"UDF不应有状态" 切入来剖析Flink SQL代码生成 (修订版) 目录 [源码分析]从"UDF不应有状态" 切入来剖析Flink SQL代码 ...
- mybatis-plus报org.apache.ibatis.binding.BindingException分析【转载】
这个问题整整纠结了我四个多小时,心好累啊...不废话... 背景:Spring整合Mybatis 报错:org.apache.ibatis.binding.BindingException: Inva ...
- mybatis源码分析(4)----org.apache.ibatis.binding包
1. 我们通过接口操作数据库时,发现相关的操作都是在org.apache.ibatis.binding下 从sqSessin 获取getMapper() SqlSession session = s ...
- HotSpot模板解释器目标代码生成过程源码分析
虽然说解释执行模式是逐字逐句翻译给目标平台运行的,但这样的过程未免太过缓慢,如果能把字节码说的话做成纸条,运行时只要把对应的纸条交给目标平台就可以了,这样,执行速度就会明显提升.JVM的Hotspot ...
随机推荐
- [整理]Centos6.5 + hadoop2.6.4环境搭建
搭建Hadoop集群环境(3台机器) 1 准备环境 1.1 安装系统,并配置网络使3台机器互联互通,且SSH可直连(无需密码.保存私钥) 1.1.1 安装系统 安装Centos 6.5系统 安装过程略 ...
- Adressing
- PARENT VIEW INVALIDATE
如果启动display list,parentview 调用invalidate,子view是不会是去调用onDraw的,因为直接调用displaylist了,如果parentview认为子view应 ...
- SQL 2008 R2下载 升级R2 SP1或者SQL 2008从10.50.1600升级10.5.2500
SQL Server 2008 R2 中英文 开发版/企业版/标准版 链接地址 一. 简体中文 1. SQL Server 2008 R2 Developer (x86, x64, ia64) - D ...
- Database cannot be started in this edition of SQL Server" error when restoring a Microsoft Dynamics CRM database
处理办法:http://support.microsoft.com/kb/2567984
- 电脑安装Android4.0虚拟机的做法
在开始教程之前,先给大家展示一下成功运行Android 4.0虚拟机的界面,经过笔者测试,体验很流畅,喜欢DIY和对开发感兴趣的朋友们可以猛击下一页,继续浏览教程. 准备工作 在体验前我们首先要下载J ...
- exp_tools
#pwntools # github https://github.com/Gallopsled/pwntools 在线帮助文档 https://docs.pwntools.com/en/stable ...
- AC6102 DDR2测试工程
AC6102 DDR2测试工程 本文档介绍AC6102上DDR2存储器基于Verilog代码的测试过程.AC6102上使用了2片16bit的DDR2存储器组成了32bit的硬件总线.虽然是32bit硬 ...
- javascript - 可编辑表格控件 支持全键盘操作(无JS框架)
项目中经常会用到表格编辑控件,网上也有不少,但是确实没有完全符合我要求的, 自己写一个吧! 1.该控件支持 数据显示列,文本编辑列,选择列,下拉列,索引列,删除列 六种列类型 2.支持全键盘操作,自定 ...
- sql server常用语法点
if exists(select name from sysobjects where name = 'stuInfo')drop table stuInfogocreate table stuInf ...