mybatis之parameterType传递多个参数
当在查询的时候需要传入多个参数的时候该怎么办呢:
1,封装成一个Model对象,底层HashMap还是一个
User user=new User();
user.setUserName("zhangsan");
user.setPassword("123456");
queryUserByuserNameAndPass(user);//为返回值类型为User
<select id="queryUserByuserNameAndPass" resultType="User" parameterType="com.j1.User" >
select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}
</select>
2,使用HashMap封装
//使用HashMap定义:
HashMap <String,Object> map=new HashMap<String,Object>();
map.put("userName","zhangsan");
map.put("password","123456");
queryUserByuserNameAndPass(map);//为返回值类型为User
//sql 如下:
<select id="queryUserByuserNameAndPass" resultType="User" parameterType="Map" >
select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}
</select>
3,使用注解,@param
queryUserByuserNameAndPass(@param(''userName")String userName,@param("password")String password)
<select id="queryUserByuserNameAndPass" resultType="User">
select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}//
</select>
queryUserByuserNameAndPass(String userName,String PassWord); //返回值类型为Usre
//sql
<select id="queryUserByuserNameAndPass" resultType="User">
select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}//会报错的
</select>
改为如下:
<select id="queryUserByuserNameAndPass" resultType="User">
select * from user u where u.user_name=#{0} and u.pass_word=#{1}//运行成功但是,可读性不高
</select>
//parameterType 参数类型可以是基本数据类型(int,String,long),可以是Model对象,也可以是Map;
1,基本数据类型:
//java代码 @Override
public void deleteUserById(Long id) {
SqlSession sqlSession = sqlSessionFactory.openSession(true);
sqlSession.delete("cn.itcast.mybatis.user.deleteUserById", id);
}
//sql
<delete id="deleteUserById" parameterType="java.lang.Long">
DELETE FROM tb_user WHERE id = #{id}
</delete>
2,Model对象
//java代码: @Override
public void saveUser(User user) {
SqlSession sqlSession = sqlSessionFactory.openSession(true);
sqlSession.insert("cn.itcast.mybatis.user.saveUser", user);
} @Override
public void updateUser(User user) {
SqlSession sqlSession = sqlSessionFactory.openSession(true);
sqlSession.update("cn.itcast.mybatis.user.updateUser", user);
}
//sql
<update id="updateUser" parameterType="cn.itcast.mybatis.pojo.User">
UPDATE tb_user
SET
password = #{password},
name = #{name},
age = #{age},
sex = #{sex},
birthday = #{birthday},
updated = NOW()
WHERE
id = #{id};
</update>
3.map
//java
HashMap <String,Object> map=new HashMap<String,Object>();
map.put("userName","zhangsan");
map.put("password","123456");
queryUserByuserNameAndPass(map);//为返回值类型为User
//sql 如下:
<select id="queryUserByuserNameAndPass" resultType="User">
select * from user u where u.user_name=#{userName} and u.pass_word=#{passWord}//
</select>
mybatis之parameterType传递多个参数的更多相关文章
- MyBatis框架使用 —— 传递多个参数的方式
引言 目前,MyBatis的使用越来越普遍,也有一些公司使用Hibernate.使用MyBatis需要我们自己书写SQL语句,面对各种复杂的场景,SQL传递多参是很普遍的.如何传递多参应对不同的场景也 ...
- Mybatis接口中传递多个参数
1.接口 public interface MemberMapper { public boolean insertMember(Members member); public Members sel ...
- Mybatis中select传递多个参数
一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...
- mybati之parameterType传递多个参数
当在查询的时候需要传入多个参数的时候该怎么办呢: 1,封装成一个Model对象,底层HashMap还是一个 User user=new User(); user.setUserName("z ...
- Mybatis的parameterType传入多个参数
如果查询的条件有多个的时候,mybatis有三种传入方式: 1.通过注解传入 例如: public interface Mapper(){ public User login(@Param(" ...
- MyBatis DAO层传递参数到mapping.xml 几种方式
Dao层传递参数到mapping.xml文件的几种方式:(Mybatis传值总结) 第一种:传递单个参数 Dao层Code片段: /** * 根据articleId查询XXXX详情. * * @par ...
- MyBatis 示例-传递多个参数
映射器的主要元素: 本章介绍 select 元素中传递多个参数的处理方式. 测试类:com.yjw.demo.MulParametersTest 使用 Map 传递参数(不建议使用) 使用 MyBat ...
- Mybatis传递多个参数的几种方式
顺序传参法 public User selectUser(String name, int deptId); <select id="selectUser" resultMa ...
- Mybatis 传递多个参数
Mybatis提供了4种传递多个参数的方法: 1 Map sql语句 接口 调用方法 这个方法虽然简单易用,但是存在一个弊端:Map存储的元素是键值对,可读性不好. 2 注解 使用MyBatis的参数 ...
随机推荐
- Makefile学习之路——4
变量的类别有递归扩展变量和简单扩展变量.只用一个“=”符号定义的变量被称为递归扩展变量.通过下面例子观察递归扩展变量的特点. .PHONY: all foo=$(bar) bar=$(ugh) ugh ...
- linux 中的进程wait()和waitpid函数,僵尸进程详解,以及利用这两个函数解决进程同步问题
转载自:http://blog.sina.com.cn/s/blog_7776b9d3010144f9.html 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / wait ...
- C中结构体的存储分配
C中结构体的存储分配 对于C语言中结构体所占的存储空间的大小,也一直是笔试面试的常客,今天好好看了一下这方面,以前一直以为很清楚了,今天通过各种实际测试举例,发现原来还是没有搞透彻,好在现在是彻底懂了 ...
- Redis Key 过期策略
redis 官方提供的 conf https://raw.github.com/antirez/redis/2.2/redis.conf 中6中过期策略的具体方式.redis 中的默认的过期策略是vo ...
- 【C】——回调函数实现泛型算法
回调函数的一个典型应用就是实现类似C++的泛型算法(Generics Algorithm).下面实现的max函数可以在任意一组对象中找出最大值,可以是一组int.一组char或者一组结构体,但是实现者 ...
- 记录日志框架:log4net使用
一.log4net简介 Log4net是Apache下一个开放源码的项目,我们可以控制日志信息的输出目的地.Log4net中定义了多种日志信息输出模式.在做项目的时候最头疼的是在程序发布到正式环境之后 ...
- 关于Cocos2d-x中节点和精灵的关系以及初始化
1.每一个对象类都有一个自己public的一个create函数(等价于CREATE_FUNC),和init函数. 2.create函数返回的是自身的类型,init函数是在ceate函数被调用的时候自动 ...
- 关于Cocos2d-x很多奇怪的报错
1.说什么找不到类和命名空间,但是已经包含头文件 项目-属性-配置属性-C/C++-附加包含目录-编辑-添加新行-写上$(EngineRoot) 2.很多语句报错,但是都没问题 我是这样理解的,书上的 ...
- map用法小例子
一. Map< Key , Value > m_Eg; 一般赋值表示成: TypeElem value; m_Eg[key] = value; 或 m_Eg.insert(make_ ...
- e655. 混合风格的文本
This example applies a new font and background color to a part of the text. You can apply styles to ...