mybatis之sql传递参数映射(六)

本文介绍了在MyBatis中如何使用两种不同的参数传递方式:通过自定义包装类和使用HashMap。具体展示了如何在XML映射文件中配置SQL语句,并在Java接口中定义相应的方法来实现对数据库的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.传递包装类
User类

public class User {
    private int id;
    private String username;// 用户姓名
    private String sex;// 性别
    private Date birthday;// 生日
    private String address;// 地址
    //set/get方法省略
    }

User包装类

public class UserQueryVo {
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

}

UserMapper接口

public interface UserMapper {
    User findUserByName(UserQueryVo uv);
}

UserMapper.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.test.mapper.UserMapper">
    //${}和#{}中的参数名需要和包装类中的对象层级一致,并且属性名要一致
    <select id="findUserByName" parameterType="com.test.domain.UserQueryVo" resultType="com.test.domain.User">
        SELECT * FROM USER WHERE username like '%${user.username}%' AND sex = #{user.sex}
    </select>
</mapper>

测试代码

    @Test
    public void test_04(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        UserQueryVo uv = new UserQueryVo();
        User user = new User();
        user.setUsername("五");
        user.setSex("2");
        uv.setUser(user);
        User user2 = userMapper.findUserByName(uv);
        System.out.println(user2);
    }

2.传递HashMap
同传递POJO对象一样,map的key相当于pojo的属性。

UserMapper接口

public interface UserMapper {
    List<User> findUserByHashMap(Map<String, Object> map);
}

UserMapper.xml

<!DOCTYPE mapper    
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"    
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.test.mapper.UserMapper">
    <select id="findUserByHashMap" parameterType="hashmap" resultType="com.test.domain.User">
        SELECT * FROM USER WHERE username like '%${username}%' AND sex = #{sex}
    </select>
</mapper>

测试代码

    @Test
    public void test_05(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("username", "小");
        map.put("sex", "1");
        List<User> user2 = userMapper.findUserByHashMap(map);
        System.out.println(user2);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值