mybati之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>
mybati之parameterType传递多个参数的更多相关文章
- mybatis之parameterType传递多个参数
当在查询的时候需要传入多个参数的时候该怎么办呢: 1,封装成一个Model对象,底层HashMap还是一个 User user=new User(); user.setUserName("z ...
- Dao层向sql语句传递多个参数
手动封装: serviceImpl层 Map<String, Object> params = new HashMap<String, Object>(2);params.pu ...
- MyBatis 示例-传递多个参数
映射器的主要元素: 本章介绍 select 元素中传递多个参数的处理方式. 测试类:com.yjw.demo.MulParametersTest 使用 Map 传递参数(不建议使用) 使用 MyBat ...
- Mybatis传递多个参数的几种方式
顺序传参法 public User selectUser(String name, int deptId); <select id="selectUser" resultMa ...
- Mybatis传递多个参数进行SQL查询的用法
当只向xxxMapper.xml文件中传递一个参数时,可以简单的用“_parameter”来接收xxxMapper.java传递进来的参数,并代入查询. 但是,如果在xxxMapper.java文件中 ...
- MyBatis框架使用 —— 传递多个参数的方式
引言 目前,MyBatis的使用越来越普遍,也有一些公司使用Hibernate.使用MyBatis需要我们自己书写SQL语句,面对各种复杂的场景,SQL传递多参是很普遍的.如何传递多参应对不同的场景也 ...
- 【问题】Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数
[问题]Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数. [解决]直接对变量加引号,如: <button onclick="deleteProduct('@ ...
- C#使用结构来传递多个参数
当参数超过5个时,建议用结构来传递多个参数. 示例代码如下: public struct MyStruct { public string str; public int number; } clas ...
- 转载 C#中使用结构来传递多个参数
C#中当参数超过5个时,建议用结构来传递多个参数. 示例代码如下: public struct MyStruct { public string str; public int number; } c ...
随机推荐
- 使用C#代码追加和提交文件到SVN服务器
windows系统下使用svn的命令需要安装一个插件,下载地址:http://sourceforge.net/projects/win32svn/?source=typ_redirect 安装后程序会 ...
- java编程小技巧
1.缩进与反缩进 缩进:tab 反缩进:shift+tab 2.整段注释和取消整段注释 整段注释:ctrl+shift+/ 取消整段注释:ctrl+shift+\
- 【插件】WordPress缓存最佳组合:DB Cache Reloaded Fix + Hyper Cache
DB Cache Reloaded Fix是一个出色的WordPress数据库缓存插件,可以大大减少对数据库的请求次数. Hyper Cache 是非常小巧但很强大的WordPress缓存插件,设置简 ...
- phpcms v9联动菜单实现筛选
<!--初始化init--> {php $theurl = "index.php?m=content&c=index&a=lists&catid=$cat ...
- 列表框List Box
List Box/Check List Box ListBox窗口用来列出一系列的文本,每条文本占一行.创建一个列表窗口可以使用成员函数: BOOL CListBox::Create( LPCTSTR ...
- 标签static
静态文本控件的功能比较简单,可作为显示字符串,图标,位图用.创建一个窗口可以使用成员函数: BOOL CStatic::Create( LPCTSTR lpszText, DWORD dwStyle, ...
- Dapper试用简例
1.选择3.5以上框架在新建项目中引用Dapper.dll. 2.在后台写代码,代码写出来后感觉以前学的都白学了. 3. using Dapper; using System; using Syste ...
- 无效的过程调用或参数: 'Instr'解决方法
以前我一直使用ASP无组件上传类来上传文件.但是今天又个客户反映说.不能上传.出现错误.,但在我电脑上测试没问题.后来发现客户用的是IE8 于是开始找解决方法 错误如下:Microsoft VBScr ...
- Docker容器环境下ASP.NET Core Web API
Docker容器环境下ASP.NET Core Web API应用程序的调试 本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Dock ...
- APKTool用法
APKTool是GOOGLE提供的APK编译工具,需要JAVA运行环境,推荐使用JDK1.6或者JDK1.7. 如果你想对APK文件进行修改,那么就不可避免的要使用到APKTool.论坛里有很多关于R ...