`

解决mybatis传入多个参数的问题,多条语句执行

阅读更多

1.mybatis 传入多个参数的问题,我也纠结了很久,找了很多资料,都没有得到想要的结果,

无意中,mybatis 插件提示的时候发现了,原来是这样写的!

 

 

package com.hengyu.ticket.dao;

import com.hengyu.ticket.entity.Admin;
import java.util.List;

import org.apache.ibatis.annotations.Param;

/**
 * 
 * @author 李冠锋 2015-12-02
 *
 */
public interface AdminDao {
	
	public abstract List<Admin> querylist(String name,String mobile,Admin admin,@Param("id") Integer id);
	
}

 

<select id="querylist"  resultMap="result_map">
	select
		*
	from
		admin
	where
		userid = #{id} 
		<!-- #{id}  相当于 #{param4} -->
	and 
		<!-- param2 方法中的 mobile -->
		realname like'%${param2}%'
	<if test="param3!=null">
		<!-- param3 方法中的 admin 对象 -->
		or
			realname like '%${param3.realname}%'
	</if>
  </select><!-- 不要加入parameterType就可以这样写了 -->

 

 

2. mybatis 执行多条sql语句,配置jdbc驱动属性 allowMultiQueries = true 就可以执行多条语句操作了

可以多条语句更新 或删除

 

 

<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://192.168.4.127:3306/ticket" />
		<property name="username" value="root" />
		<property name="password" value="helloworld" />
		<property name="connectionProperties">
			<props>
				<prop key="allowMultiQueries">true</prop>
			</props>
		</property>
	</bean>

 

<delete id="save" parameterType="Admin" statementType="PREPARED">
		delete from admin where 1=2;
		delete from admin where 1=2;
		update admin set userid = 1 where 1=2;
  </delete>

 

3. 批量插入操作

 

<insert id="batchSave" parameterType="list">
		insert
		into
			ticket_line
			(<include refid="columns"/>)
		values
		<foreach item="i" collection="list" index="index"  separator=",">
			(<include refid="batch_propertys"/>)
		</foreach>
	 </insert>
 <sql id="columns">
	`lmid`,
	`LineName`,
	`ShiftCode`,
	`CityStartID`,
	`OriginStartTime`,
	`STStartID`,
	`STStartName`,
	`CityArriveID`,
	`STArriveID`,
	`STArriveName`,
	`StartTime`,
	`ArriveTime`,
	`TicketPrice`,
	`TransCompany`,
	`TicketDate`,
	`MakeDate`,
	`mileage`,
	`favprice`
  </sql>
 <sql id="batch_propertys">
	#{i.lmid},
	#{i.linename},
	#{i.shiftcode},
	#{i.citystartid},
	#{i.originstarttime},
	#{i.ststartid},
	#{i.ststartname},
	#{i.cityarriveid},
	#{i.starriveid},
	#{i.starrivename},
	#{i.starttime},
	#{i.arrivetime},
	#{i.ticketprice},
	#{i.transcompany},
	#{i.ticketdate},
	#{i.makedate},
	#{i.mileage},
	#{i.favprice}
  </sql>

 

 

 

分享到:
评论

相关推荐

    MyBatis传入参数的实例代码

    当需要传入多个参数时,可以使用MyBatis的`@Param`注解。在接口方法中,为每个参数添加`@Param`注解,指定参数名。在XML文件中,使用对应的参数名来获取值。 ```java public List&lt;Teacher&gt; selectTeacher(@Param...

    Mybatis框架 mapper.xml文件中parameterType传递参数常用的几种方式.pdf

    可以通过HashMap将多个参数作为键值对传递: ```java public User queryUser(Map, Object&gt; map); ``` 在XML中,可以使用键名来引用HashMap中的值: ```xml select * from user where user_name = #{...

    mybatis查询简单示例

    在本示例中,如果涉及多个操作,事务管理将确保数据的一致性。 9. **日志调试**:MyBatis提供了丰富的日志功能,可以帮助开发者跟踪SQL执行情况,便于调试和性能优化。 综上所述,这个"mybatis查询简单示例"涵盖了...

    springmybatis

    请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句: session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID", 1) 其实还有更简单的方法,而且是更好的方法,使用合理描述参数和...

    mybatis基础源码及jar包

    6. **批处理**:MyBatis提供了批处理功能,可以通过设置SqlSession的自动提交为false,然后执行多条SQL后再统一提交,以提高效率。例如,使用`&lt;batch&gt;`标签可以批量插入数据。 7. **JDBC的封装**:MyBatis在JDBC的...

    MyBatis_Select

    在MyBatis中,`&lt;select&gt;`元素主要用于执行查询操作,如获取单个记录、多条记录或执行无返回值的SQL。下面,我们将详细解析`&lt;select&gt;`元素的各个属性及其使用方法。 1. **id**: 这是映射语句的唯一标识,它在同一个...

    MyBatis_Plus

    此外,它还支持条件构造器,可以根据传入的参数动态生成对应的 WHERE 子句。 3. **主键自增与回填**:对于主键自增的表,MyBatis_Plus 可以自动处理插入后的主键值,无需手动获取。 4. **分页查询**:MyBatis_Plus...

    MyBatis的项目。实现增删改查,以及多表联查和对标签的使用。批量删除。

    MyBatis可以通过`&lt;delete&gt;`标签配合`&lt;foreach&gt;`来实现,例如,传入一个ID列表,MyBatis会生成一个包含所有ID的IN子句,从而一次性删除多条记录。 - 另外,批量删除还可以结合存储过程来提高性能,MyBatis允许调用...

    Mybatis和orcale update语句中接收参数为对象的实例代码

    在Java开发中,MyBatis是一个非常流行的持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,提供了灵活的数据库操作方式。Oracle则是一种广泛应用的关系型数据库管理系统,广泛用于大型企业级应用。当我们在...

    mybatis数据操作(增删改查+批量操作)

    在"mybatis数据操作(增删改查+批量操作)"这个主题中,我们将深入探讨如何利用MyBatis进行基本的数据操作,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select),以及如何执行批量操作。...

    精选MyBatis思维导图分享,超全超详细,思维导图附代码你们见过吗?高清

    * 使用limit关键字,需要传入开始索引和每页条数两个参数。 八、MyBatis多参数处理 * 使用arg0、arg1...或param1、param2...表示参数的顺序。 * 使用@Param注解定义参数名称,在Sql语句中通过注解中所定义的参数...

    MyBatis从入门.7z

    例如,我们可以调用Mapper接口的方法,传入参数,然后通过SqlSession的execute方法执行SQL,最后通过SqlSession的selectOne、selectList等方法获取结果。 6. **动态SQL**:MyBatis的一大亮点是支持动态SQL,通过`...

    第三章 MyBatis的核心配置.docx

    是根元素,是子元素,可以定义多个。用于配置事务管理,用于配置数据源。 3.3 映射文件 MyBatis的映射文件是xml文件,主要元素包括: * &lt;select&gt;:查询元素 * &lt;insert&gt;:插入元素 * &lt;update&gt;:更新元素 * ...

    Mybatis4.zip

    4. **动态SQL**:Mybatis的强项之一是它的动态SQL功能,可以在XML映射文件中编写条件语句,根据传入参数的不同执行不同的SQL片段。 5. **SqlSession与Executor**:SqlSession是Mybatis中的主要操作接口,用于执行...

    自定义mybatis

    2. Read(读取):通过SELECT语句获取数据,可以是单条记录,也可以是多条记录,取决于方法签名。 3. Update(更新):根据方法名和参数构建UPDATE SQL,执行更新操作。 4. Delete(删除):构造DELETE SQL,执行...

    MyBatis面试专题.pdf

    二级缓存可以在多个`SqlSession`实例之间共享,因此对于同一`namespace`下的多个查询操作,如果满足一定的条件,可以共享缓存中的数据,从而避免多次执行相同的查询操作。为了支持序列化,实体类需要实现`...

    mybatis简单查询

    举例说明条件查询,假设我们有一个用户查询接口,接受多个条件作为参数: ```xml SELECT * FROM users != null and name != ''"&gt; AND name LIKE #{name} != null and email != ''"&gt; AND email LIKE #{...

    mybatis原理

    本地缓存存在于SqlSession级别,二级缓存则在SqlSessionFactory级别,可跨多个SqlSession共享数据。 **7. MyBatis的动态SQL** MyBatis允许在XML映射文件或者Mapper接口的方法中编写动态SQL,如if、choose、when、...

    使用MyBatis实现基本的CRUD操作.zip

    读取数据可以分为查询单条记录和查询多条记录。MyBatis提供了多种方式实现: - 查询单个实体:通过Mapper接口的selectOne方法,配合SQL的SELECT语句获取单个结果。 - 查询集合:使用selectList方法,返回结果集...

    mybatis3 增删改查 基本操作(CURD)

    `#{}`是MyBatis的占位符,用于传入参数。 接下来是“删”操作。删除数据使用`&lt;delete&gt;`标签,以删除用户为例: ```xml DELETE FROM user WHERE id = #{id} ``` 这里通过`id`参数匹配并删除对应ID的用户记录。 ...

Global site tag (gtag.js) - Google Analytics