Mybatis模糊查找+查询编写的QueryVo对象+标签使用

模糊查找

使用关键字like

  • 接口中的方法
/**
 * 根据名称模糊查询
 * @param username
 * @return
*/
List<User> findByName(String username);
  • xml文件
<!-- 根据名称模糊查询 -->
<select id="findByName" resultType="com.itheima.domain.User" parameterType="String">
 select * from user where username like #{username}
</select>
  • 使用模糊查询测试
 @Test
 public void testFindByName(){
 //5.执行查询一个方法
 List<User> users = userDao.findByName("%王%");
 for(User user : users){
 System.out.println(user);
 }
 }

查询编写的QueryVo对象

该写法是将前面的模糊查询的条件,封装到了QueryVo对象当中

  • 接口函数
public interface IUserDao {
/**
* 根据 QueryVo 中的条件查询用户
* @param vo
* @return
*/
List<User> findByVo(QueryVo vo);
}
  • QueryVo类
/**
* 
* <p>Title: QueryVo</p>
* <p>Description: 查询条件对象</p>
* <p>Company: http://www.itheima.com/ </p>
*/
public class QueryVo implements Serializable {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}

  • XML文件
    parameterType是传输#{ }对象的类型属于那一类
    resultType是封装数据的类型
<!-- 根据用户名称模糊查询,参数变成一个 QueryVo 对象了 -->
<select id="findByVo" resultType="com.itheima.domain.User"
 parameterType="com.itheima.domain.QueryVo">
select * from user where username like #{user.username};
</select
  • 测试
@Test
public void testFindByQueryVo() {
QueryVo vo = new QueryVo();
User user = new User();
//username是查询的条件
user.setUserName("%王%");
vo.setUser(user);
List<User> users = userDao.findByVo(vo);
for(User u : users) {
System.out.println(u);
}
}

标签使用

多条件查询,与前面的QueryVo有点类似

if标签
查询的条件有可能是用户名,有可能是性别,也有可能是地址

  • 接口
List<User> findByUser(User user);
  • xml文件
    test标签,是if里面的条件
<select id="findByUser" resultType="user" parameterType="user">
select * from user where 1=1
<if test="username!=null and username != '' ">
and username like #{username}
</if>
<if test="address != null">
and address like #{address}
</if>
</select
  • 测试
@Test
public void testFindByUser() {
User u = new User();
u.setUsername("%王%");
u.setAddress("%顺义%");
//6.执行操作
List<User> users = userDao.findByUser(u);
for(User user : users) {
System.out.println(user);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值