ibatis的动态SQL非常强大,记录一些细节的东西。
1.正常的动态INSERT,即全部遍历一次,这种是通用的,如下:
<insert id="addUser" parameterClass="com.mmblue.domain.User">
INSERT INTO USER (
<dynamic prepend=" ">
<isNotEmpty property="realName" prepend=",">REALNAME</isNotEmpty>
<isNotEmpty property="password" prepend=",">PASSWORD</isNotEmpty>
<isNotEmpty property="projectId" prepend=",">PROJECT_ID</isNotEmpty>
<isNotEmpty property="isEable" prepend=",">ISENABLE</isNotEmpty>
<isNotEmpty property="createTime" prepend=",">CREATETIME</isNotEmpty>
<isNotEmpty property="name" prepend=",">USERNAME</isNotEmpty>
<isNotEmpty property="id" prepend=",">USERID</isNotEmpty>
<isNotEmpty property="isFirstLogin" prepend=",">ISFIRSTLOGIN</isNotEmpty>
</dynamic>
<![CDATA[
) VALUES (
]]>
<dynamic prepend=" ">
<isNotEmpty property="realName" prepend=",">#realName#</isNotEmpty>
<isNotEmpty property="password" prepend=",">#password#</isNotEmpty>
<isNotEmpty property="projectId" prepend=",">#projectId#</isNotEmpty>
<isNotEmpty property="isEable" prepend=",">#isEable#</isNotEmpty>
<isNotEmpty property="createTime" prepend=",">#createTime#</isNotEmpty>
<isNotEmpty property="name" prepend=",">#name#</isNotEmpty>
<isNotEmpty property="id" prepend=",">#id#</isNotEmpty>
<isNotEmpty property="isFirstLogin" prepend=",">#isFirstLogin#</isNotEmpty>
</dynamic>
<![CDATA[
)
]]>
</insert>
2.有的字段必须插入,不是采用这种全部判断的方式
<insert id="addUser" parameterClass="com.mmblue.entity.system.User">
<selectKey keyProperty="id" resultClass="long">
select S_MYIVR_TUSER.NEXTVAL as id from DUAL
</selectKey>
INSERT INTO MYIVR_TUSER (
USERID
<isNotEmpty property="name">,USERNAME</isNotEmpty>
<isNotEmpty property="realName">,REALNAME</isNotEmpty>
<isNotEmpty property="password">,PASSWORD</isNotEmpty>
<isEqual property="enable" compareValue="1">,ISENABLE</isEqual>
<isNotEmpty property="createTime">,CREATETIME</isNotEmpty>
<![CDATA[
) VALUES (
]]>
#id#
<isNotEmpty property="name">,#name#</isNotEmpty>
<isNotEmpty property="realName">,#realName#</isNotEmpty>
<isNotEmpty property="password">,#password#</isNotEmpty>
<isEqual property="enable" compareValue="1">,#enable#</isEqual>
<isNotEmpty property="createTime">,#createTime#</isNotEmpty>
<![CDATA[
)
]]>
</insert>
注意 ,USERNAME 里面的',',和最后一个是不带'
,' 这样的话就算只有1个字段有值都可以插入进去。
如果和第一种方式一样的话就会出现INSERT INTO MYIVR_TUSER(USERID,,USERNAME) values(id,,name)这样的情况
分享到:
相关推荐
开发指南 iBATIS SQL Maps Page 3 of 62 Map类型的Result 复杂类型属性(即自定义类型的属性) 避免N+1 Select(1:1) 延迟加载 VS 联合查询(1:1) 复杂类型集合的属性 避免N+1 Select(1:M和M:N) 组合键值或多...
比如考虑在iBatis: SQL Maps中的应用例子。这是一个Struts应用允许对一个关系表执行SELECT, INSERT, UPDATE和DELETE的SQL请求。在这个应用中,使用SQL Maps做持续性框架。现在我们要修改这个应用,将这个关系表储存...
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="Account"> <typeAlias alias="Account" type="Account"/> ...
本工程用于研究Ibatis和MySQL结合使用的方法 本工程编码方式:UTF-8 须执行的SQL语句: CREATE DATABASE `test`; USE `test`; DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` char(36) NOT NULL...
使用ibatis 提供的ORM 机制,对业务逻辑实现人员而言,面对的是纯粹的Java 对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求...
本工程以“银行账号转账”为例子...insert into `lm_bank_card`(`id`,`account`,`deposit`) values ('03a2fb24-62f6-4ff7-85ba-74a51351b975','father','10000'),('b5bddc58-4fe2-451a-9bb3-b3a54203c6da','sun','0');
本工程以“银行账号转账”为例子...insert into `lm_bank_card`(`id`,`account`,`deposit`) values ('03a2fb24-62f6-4ff7-85ba-74a51351b975','father','10000'),('b5bddc58-4fe2-451a-9bb3-b3a54203c6da','sun','0');
本工程用于研究Spring、Ibatis结合MySQL数据库的使用方法 本工程编码方式:UTF-8 须执行的SQL语句: CREATE DATABASE `test`; USE `test`; DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` char...
当不用持久层框架(ibatis,hibernate等)的时候,使用单纯的jdbc操作的时候,创建实体类,写基本的insert和update很烦人。还容易错。中午用午睡时间赶紧弄了个工具。使用起来很简单,只需要给数据库连接串和表名字就...
│ │ dynamic-sql.html │ │ findbugs.html │ │ getting-started.html │ │ index.html │ │ integration.html │ │ issue-tracking.html │ │ java-api.html │ │ jdepend-report.html │ │ license.html...
IBATIS开发包使用实例使用出错 ①插入操作时会报SQL错误,原因如下 com.mydomain.data.Account.xml文件的insert部分ACC_EMIAL的后面没有括号,加上即可解决这个问题。 具体请参考网上的一篇博客:...
SQL Maps (com.ibatis.sqlmap.*)......................................................................................................5 SQL Map的概念........................................................
3.5 INSERT语句 3.6 UPDATE语句 3.7 DELETE语句 3.8 本章小结 第4章 PL/SQL 4.1 PL/SQL简介 4.2 PL/SQL基础 4.3 本章小结 第二篇 JDBC篇 第5章 JDBC技术基础 5.1 JDBC概述 5.2 JDBC API 5.3...
<br>IBatisNet是一个轻量级ORMap工具,它把所有的SQL脚本以模板的方式集中到若干个XML配置文件里,用反射的方式向把C#类实体对象属性与SQL模板的参数绑定,动态生成参数化的SQL语句发送给数据库执行,查询的结果...
<br>IBatisNet是一个轻量级ORMap工具,它把所有的SQL脚本以模板的方式集中到若干个XML配置文件里,用反射的方式向把C#类实体对象属性与SQL模板的参数绑定,动态生成参数化的SQL语句发送给数据库执行,查询的结果...
mybatis实战教程mybatis in action之八mybatis 动态sql语句 mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载 转自:...
如果你觉得hibernate,ibatis等orm框架过于笨重,不烦试下jdao,它可以在团队开发中规范团队持久层代码,较少开发量,特别在单表操作上基本是对象操作,对于复杂SQL查询也有较好的封装。一、使用DAO方式操作数据:...
充分利用各种文件的注释 如在.xml中我们可以使用 在.properties文件中我们可以使用 #generator-insert-location 具体请查看template/insert_demo目录的内容 生成器参数配置 通过设置GeneratorProperties.set...
<br>IBatisNet是一个轻量级ORMap工具,它把所有的SQL脚本以模板的方式集中到若干个XML配置文件里,用反射的方式向把C#类实体对象属性与SQL模板的参数绑定,动态生成参数化的SQL语句发送给数据库执行,查询的结果...
5.15 Martini项目下的ibatis文件配置 5.16 数据库测试FAQ 6 Spring和SQL跟踪 6.1 @Tracer 6.2 FAQ 7 JTester插件的使用 7.1 插件功能 7.2 插件安装 7.3 录制变量的功能 7.4 dbFit插件编辑功能 7.5 从数据库中直接拖...