Mybatis传递多个参数

来源:互联网 发布:编发教学软件 编辑:程序博客网 时间:2024/05/22 05:01

目前本人在学习Mybatis,记录一下相关知识。


   MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。在该mapper.xml中有select,update,insert,delete常用的数据库操作。你可以设置传人参数类型(parameterType),和输出结果类型(resultType,resultMap)。

问题来了,之前用Hibernate的时候,基本上你想传多少个参数,直接dao层接收多少个参数就行,直接传。MyBatis接收单个参数时很好办,直接将parameterType设为你要传的参数类型就可以。但是如何传多个参数呢?

有两种方法(目前知道两种,初学者,求轻喷):

1,通过javabean传入多个参数:

我的mapper.xml是这样的:

<!-- sql片段 --><sql id="sql_where_dymatic"><if test="username!=null"> AND username=#{username}</if><if test="address!=null">AND address=#{address}</if></sql><!-- sql综合查询 --><select id="findDynamic" resultType="User" parameterType="User">SELECT * FROM user<where><include refid="sql_where_dymatic"></include></where></select>
dao层是这样:

public List<User> findDynamic(User user);
只要在控制层new一个user,接着set相应属性值就行了。

2,通过map传入:

同理mapper.xml

<!-- sql片段 --><sql id="sql_where_dymatic"><if test="username!=null"> AND username=#{username}</if><if test="address!=null">AND address=#{address}</if></sql><!-- sql综合查询 --><select id="findDynamic" resultType="User" parameterType="map">SELECT * FROM user<where><include refid="sql_where_dymatic"></include></where></select>

接着dao层:

public List<User> findDynamic(Map paramMap);


最后在控制层将你要传递的参数以键值对的形式放入paramMap中:

@Testpublic void testFindDynamic()throws Exception{SqlSession session=getSession();UserMapper userMapper=session.getMapper(UserMapper.class);Map<String,String> paramMap=new HashMap<String, String>();paramMap.put("username", "lensssss");paramMap.put("address", "taizhouchina");List<User> userList=userMapper.findDynamic(paramMap);session.close();}





0 0
原创粉丝点击