mapper映射文件中parameterType是多个如何传参

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>

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的mapper.xml文件示例: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.UserMapper"> <!-- 查询用户信息 --> <select id="getUserById" parameterType="int" resultType="com.example.entity.User"> SELECT * FROM user WHERE id = #{id} </select> <!-- 添加用户信息 --> <insert id="addUser" parameterType="com.example.entity.User"> INSERT INTO user(name, age, gender) VALUES(#{name}, #{age}, #{gender}) </insert> <!-- 更新用户信息 --> <update id="updateUser" parameterType="com.example.entity.User"> UPDATE user SET name = #{name}, age = #{age}, gender = #{gender} WHERE id = #{id} </update> <!-- 删除用户信息 --> <delete id="deleteUser" parameterType="int"> DELETE FROM user WHERE id = #{id} </delete> </mapper> ``` 在这个示例,我们声明了一个名为`com.example.mapper.UserMapper`的命名空间,并定义了四个SQL语句: - `getUserById`:查询用户信息 - `addUser`:添加用户信息 - `updateUser`:更新用户信息 - `deleteUser`:删除用户信息 每个SQL语句都有一个唯一的ID,指定参数类型和返回类型。在SQL语句,我们使用了`#{}`占位符来引用Java对象的属性。这些占位符将在执行SQL语句时替换为实际的值。 注意,mapper.xml文件必须符合MyBatis的DTD规范。在本示例,我们使用了MyBatis提供的DTD文件。你也可以使用本地DTD文件或者从官方网站下载最新的DTD文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值