`
mmBlue
  • 浏览: 167259 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ibatis中动态SQL_insert

阅读更多

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 UPDATE 动态XML与insert

    动态XML是MyBatis提供的一种灵活的SQL编写方式,允许在XML映射文件中动态地构建SQL语句。 首先,让我们来深入了解一下MyBatis的动态SQL。动态SQL是MyBatis的一个强大特性,它允许你在XML映射文件中编写条件语句,...

    ibatis-api.rar_ibatis a_ibatis api_ibatis api.chm_ibatisAPI_java

    Ibatis API 的一个重要特点是动态SQL,它允许在XML配置文件或Mapper接口注解中编写条件语句,使得SQL的生成更加灵活,适应复杂的业务场景。 在实际开发中,Ibatis API 可以与Spring框架集成,通过Spring的`...

    iBatis_Demo.rar_ibaties demo_ibatis de_ibatis mysql demo_ibati

    iBatis,现已被MyBatis取代,是Java中的一个持久层框架,它简化了数据库操作,通过XML或注解的方式将SQL与Java代码绑定,避免了传统的JDBC代码编写工作,提高了开发效率和代码的可读性。它处理结果映射,事务管理,...

    08_传智播客ibatis教程_sql主键生成方式

    本教程“08_传智播客ibatis教程_sql主键生成方式”主要聚焦于如何在Ibatis中处理SQL查询时的主键生成策略,这对于确保数据的一致性和完整性至关重要。 Ibatis允许开发者自定义SQL语句,包括插入、更新、删除和查询...

    iBATIS_02_addSequence_add_del_update_sel_sellike

    在 iBATIS 中,添加数据通常是通过调用 SQL Map 中的 `&lt;insert&gt;` 标签来完成的。开发者定义一个 SQL 语句,并将 Java 对象的属性映射到 SQL 语句的占位符上,iBATIS 自动处理参数绑定和事务提交。 2. **删除...

    08_ibatis教程_sql主键生成方式.rar

    在Ibatis中,只需在Mapper XML文件中的`&lt;insert&gt;`标签中设置`useGeneratedKeys="true"`和`keyProperty="id"`,就可以让数据库自动生成主键。 4. **雪花算法(Snowflake Algorithm)**: 在分布式环境下,为了保证...

    IBATIS_IN_ACTION

    - **动态SQL**:掌握如何使用iBATIS的动态SQL功能,实现条件语句和循环结构的动态构建。 ### iBATIS在现实世界的应用 - **性能优化与缓存**:了解如何利用iBATIS的缓存机制来提高应用性能,减少数据库访问次数。 -...

    iBATIS-SqlMaps-2_cn.pdf

    6. **Dynamic SQL**:允许在XML映射文件中进行条件判断,动态生成SQL语句,提高了SQL的灵活性和复用性。 7. **Transactions**:SQL Maps支持声明式和编程式的事务管理,确保数据的一致性和完整性。 通过使用iBATIS...

    iBATIS-SqlMaps-2_ja.pdf

    iBATIS 支持动态 SQL,即根据运行时的条件动态构建 SQL 语句。这包括: - **二进制条件元素**:例如 `&lt;if&gt;` 和 `&lt;choose&gt;` 等元素,用于构建复杂的条件逻辑。 - **简单动态 SQL 元素**:如 `&lt;where&gt;` 和 `&lt;set&gt;` 等...

    ibatis入门教程_ibatis入门教程_源码

    Ibatis提供强大的动态SQL功能,允许在XML映射文件中进行条件判断、循环等复杂操作,如`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;foreach&gt;`等标签。 五、Mapper接口与注解 1. Mapper接口:定义...

    ibatis常用的sql

    这些SQL语句主要用于Oracle数据库中,涉及到了删除、插入以及查询等基本操作,并且在ibatis框架中实现了参数化处理。 ### 一、删除操作 首先我们来看第一条SQL语句: ```xml parameterClass="long"&gt; delete ...

    ibatis常用sql语句

    标题与描述概述的知识点主要集中在iBATIS框架的SQL映射技术上,特别是针对不同类型的输入参数如何在iBATIS中构建SQL语句。以下是对这些知识点的详细展开: ### iBATIS SQL映射技术概览 iBATIS是早期流行的Java持久...

    iBATIS-SqlMaps-2_cn.rar

    5. **动态SQL**:探索 iBATIS 如何通过`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签实现条件判断和动态SQL生成。 6. **事务管理**:理解 iBATIS 的事务控制机制,包括自动和手动提交、回滚和隔离级别设置。 ...

    ibatis-sqlmap_2.3.4_2.jar两个版本的jar包

    1. 动态SQL:Ibatis-SqlMap支持在XML映射文件中编写动态SQL,使得SQL生成更加灵活。 2. 缓存机制:提供了一级缓存和二级缓存,能够提高数据访问效率。 3. 映射文件和Java代码分离:通过XML配置文件,将SQL逻辑和业务...

    ibatis sql 语句的编写

    本文将详细介绍ibatis中的SQL语句编写方法,主要包括查询、插入、更新和删除等基本操作,并通过一个具体的例子来加深理解。 #### 二、ibatis简介 Ibatis是一个基于Java的持久层框架,它支持定制化SQL、存储过程...

    Ibatis-api.rar_ibatis_ibatis api

    在业务逻辑中,我们通常会通过Mapper接口与数据库进行交互,这些接口的定义与XML配置文件中的SQL语句相对应,这样就实现了SQL语句的动态绑定。 1. SqlSessionFactoryBuilder:这个类用于构建SqlSessionFactory。...

    iBATIS-SqlMaps 中文

    在实际应用中,iBATIS的一个显著优点是它可以灵活地处理复杂的SQL,而不像ORM框架那样将SQL完全抽象化。这使得开发者可以充分利用数据库的特性,提高查询效率。然而,这也意味着开发者需要对SQL有较深入的理解。 总...

    ibatis sql生成工具

    此外,该工具可能还包含了对复杂的查询条件的支持,比如模糊搜索、分页查询等,这些在生成的SQL中会以动态SQL的形式出现,使得代码更加简洁和易于维护。对于大型项目而言,这种自动化生成的功能能够显著减少编码时间...

    iBATIS-SqlMaps

    iBATIS 的动态SQL功能允许开发者在XML配置文件中编写条件化的SQL语句,可以根据实际参数来决定SQL的执行部分。这大大增加了SQL的灵活性,避免了因为硬编码而导致的重复SQL语句。 **事务管理** iBATIS 提供了事务...

Global site tag (gtag.js) - Google Analytics