Mapper中多参数查询,
批量更新
参数包括String和List类型时,Strig类型的为表名,日志表以月为单位生成,(还可以使用按月表分区功能优化性能)一般使用Map方式注入参数。例如调用类:
- public int batchUpdate(List<Logs> list,String num) {
- Map<String,Object> paramMap = new HashMap<String,Object>();
- String tableName = "logs_t"+num;
- paramMap.put("tableName", tableName);
- paramMap.put("logslist", list);
- return mapper.batchUpdateLogs(paramMap);
- }
public int batchUpdate(List<Logs> list,String num) { Map<String,Object> paramMap = new HashMap<String,Object>(); String tableName = "logs_t"+num; paramMap.put("tableName", tableName); paramMap.put("logslist", list); return mapper.batchUpdateLogs(paramMap); }
Mapper类:
int batchUpdateLogs(Map<String, Object> paramMap);
Mapper配置文件:
- <insert id="batchUpdateWorkLog" parameterType="java.util.Map">
- replace into ${tableName} (
- <include refid="Base_Column_List" />
- ) values
- <foreach collection="workLoglist" item="item" index="index" separator="," >
- (#{item.id,jdbcType=BIGINT}, #{item.ab,jdbcType=CHAR},
- #{item.assid,jdbcType=VARCHAR}
- </foreach>
- </insert>
<insert id="batchUpdateWorkLog" parameterType="java.util.Map"> replace into ${tableName} ( <include refid="Base_Column_List" /> ) values <foreach collection="workLoglist" item="item" index="index" separator="," > (#{item.id,jdbcType=BIGINT}, #{item.ab,jdbcType=CHAR}, #{item.assid,jdbcType=VARCHAR} </foreach> </insert>
在调用类里面将参数以Object类型植入Map中,传入Mapper配置文件中拼成SQL。
replace into 可以代替update tables set xx = xxx
replace into 有个大坑,在配置有主从服务器的时候会导致从库的自增主键出错,详细内容以下地址:
http://blog.xupeng.me/2013/10/11/mysql-replace-into-trap/
相关推荐
### ibatis多参数查询解析 #### 一、引言 在使用ibatis(现称为MyBatis)进行数据库操作时,经常会遇到需要处理多个输入参数的情况。然而,默认情况下ibatis只支持单个输入参数,这在实际开发中往往难以满足需求。...
ibatis支持多种参数处理方式,包括基本类型、复杂对象、列表和Map等。参数可以通过`#{}`语法在SQL语句中引用,ibatis会自动进行类型转换和值绑定。 ### resultMap `resultMap`是ibatis中一个重要的概念,用于描述...
在Ibatis中,多表查询是一项重要的功能,它允许我们处理复杂的数据库操作,例如一对多、多对一或一对一的关系。在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,...
在Ibatis中,参数可以通过`#`或`$`符号传递。例如,`select * from PRODUCT where PRD_CAT_ID = #{value}`中的`#{value}`是预编译参数,能有效防止SQL注入。 总结,Ibatis提供了灵活的SQL映射机制,使得开发人员...
本文将深入探讨iBatis在处理多表查询时的具体步骤和技巧。 ### 1. iBatis简介 iBatis 是一个基于Java的持久层框架,它简化了数据库访问,并避免了JDBC代码的繁琐编写。通过XML或注解方式配置SQL与Java对象的映射...
ResultMap不仅支持简单的列名映射,还能处理复杂的一对多、一对一关系映射。 六、ParameterHandler ParameterHandler负责设置PreparedStatement的参数。`org.apache.ibatis.executor.parameter.ParameterHandler`...
iBatis提供了批处理功能,可以在一次数据库连接中执行多个SQL语句,这极大地提高了处理大量数据时的性能。iBatis通过`SqlMapClient`接口提供了几个关键方法来实现批处理: 1. **`startBatch()`**:开始批处理。 2. ...
总之,iBATIS框架通过丰富的标签系统,为处理各种类型的输入参数提供了灵活而强大的解决方案,使得开发人员能够更加专注于业务逻辑的实现,而不必过多关注底层的数据库操作细节。这对于提高开发效率和代码质量具有...
3. 在Ibatis 3.x版本中,对于输出参数的处理有所改进,可以直接在`parameterType`中定义JavaBean对象,而不需要使用Map。 总结来说,Ibatis支持与存储过程的集成,包括带输出参数的存储过程,这为开发者提供了更多...
为了解决这个问题,ibatis(现已更名为MyBatis)提供了一种支持批量更新的机制,能够显著提高数据处理的速度。 #### 批量Update背景与问题 在实际应用中,经常会遇到需要批量更新数据库中的数据的情况,例如:商品...
随着对Ibatis的深入理解和实践,你会发现它在处理数据库操作时的灵活性和强大性。在实际项目中,结合Spring框架使用Ibatis,可以构建出更加健壮、高效的后端系统。因此,无论你是初学者还是有经验的开发者,掌握...
1. 映射关系:Hibernate提供了一种对象关系映射(ORM)机制,自动处理对象与数据库之间的转换,而iBATIS需要开发者手动编写SQL语句。 2. 开发效率:在相同需求下,iBATIS的工作量可能大于Hibernate,因为需要手写SQL...
2.3 参数绑定:调用 SqlSession 的方法时,传入参数对象或 Map,Ibatis 会自动将参数映射到 SQL 语句中。 2.4 结果处理:查询操作返回的结果会被自动映射到 Java 对象,更新操作返回受影响的行数。 **3. 动态 SQL*...
当使用#{paramName}时,iBatis会自动处理参数,将其转化为预编译SQL中的问号,类似于PreparedStatement在Java JDBC中的作用。 2. **动态SQL**:iBatis允许在SQL映射文件中编写条件判断,实现SQL语句的动态生成。...
5. **Transaction**:处理数据库事务,提供了开始、提交、回滚等操作。 **二、iBATIS SQL Maps开发指南** `iBATIS SQL Maps开发指南.pdf`是一份详细的开发者手册,涵盖了从入门到高级的全部内容,以下是其中的重点...
5. **结果集映射**:通过`<resultMap>`标签,可以定义复杂的字段映射规则,包括一对一、一对多、多对多的关系映射,使得结果处理更便捷。 6. **事务管理**:Ibatis支持编程式和声明式的事务管理,可以根据项目需求...
Ibatis 会自动处理查询结果,如果返回多条记录,只会返回第一条。确保 SQL 语句的条件能够唯一确定一条记录。 6. **数据集合查询** 对于查询结果集的情况,使用 `selectList` 方法。它会返回一个 List 对象,每个...
1. Mybatis-Plus:在 Ibatis 基础上提供了更多的扩展功能,如 CRUD 操作、条件构造器等。 2. Mybatis Generator:自动化代码生成工具,自动生成 Entity、Mapper 和 XML 文件,提高开发效率。 通过以上内容,你将对 ...
此外,iBatis还支持Map迭代,当查询结果中的列名与Java对象的属性不完全匹配,或者需要处理多表联查结果时,Map迭代非常有用。例如: ```java List, Object>> maps = sqlSession.selectList(...
7. **事务管理**:Ibatis.Net提供了对数据库事务的支持,你可以选择手动管理事务或者让Ibatis.Net自动处理,这在多表操作和数据一致性维护中非常重要。 8. **扩展性**:Ibatis.Net的设计使得它易于与其他框架集成,...