mybatis学习(动态Sql)

动态 SQL

if标签

//实体类
public class User implements Serializable {
    private  Integer id;
    private  String username;
    private Date birthday;
    private  String sex;
    private  String address;

    public User() {
        super();
    }

    public User(Integer id, String username, Date birthday, String sex, String address) {
        this.id = id;
        this.username = username;
        this.birthday = birthday;
        this.sex = sex;
        this.address = address;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}
//持久层dao接口
public interface UserMapper {
  
    //根据用户信息,查询用户列表
    List<User> findByUser(User user);

}
//持久层 Dao 映射配置
<select id="findByUser" resultType="user" parameterType="user">
select * from user where 1=1
<if test="username!=null and username != '' ">
and username = #{username}
</if>
 <if test="address != null">
and address= #{address}
</if>
</select>
//测试
@Test
public void testFindByUser() {
User u = new User();
u.setUsername("%曾%");
u.setAddress("%娄底%");
List<User> users = userDao.findByUser(u);
for(User user : users) {
System.out.println(user);
}
 }

where标签
配合if标签使用,简化i上面代码中的 :where 1=1

<select id="findByUser" resultType="user" parameterType="user"> 
select *  from user
 <where> 
 <if test="username!=null and username != '' ">
and username= #{username}
</if> 
<if test="address != null">
and address= #{address}
</if>
</where>
</select>

foreach标签

//在 QueryVo 中加入一个 List 集合用于封装参数
public class QueryVo implements Serializable {
   private List<Integer> ids;

    public List<Integer> getIds() {
        return ids;
    }

    public void setIds(List<Integer> ids) {
        this.ids = ids;
    }
}
//持久层 Dao 接口
//方法
List<User> findInIds(QueryVo vo);
//持久层 Dao 映射配置

<!-- 查询所有用户在 id 的集合之中 -->
 <select id="findInIds" resultType="user" parameterType="queryvo">
 select * from user where id in (1,2,3,4,5);  
 <where> 
 <if test="ids != null and ids.size() > 0"> 
 <foreach collection="ids" open="id in ( " close=")" item="uid" separator=",">  #{uid}
</foreach>
</if>
</where>
</select>
<foreach>标签用于遍历集合,它的属性:
collection:代表要遍历的集合元素,注意编写时不要写#{}
open:代表语句的开始部分
close:代表结束部分
item:代表遍历集合的每个元素,生成的变量名
sperator:代表分隔符

测试方法

@Test
public void testFindInIds() {
QueryVo vo = new QueryVo();
List<Integer> ids = new ArrayList<Integer>();
ids.add(41);
ids.add(42);
ids.add(43);
ids.add(46);
ids.add(57);
vo.setIds(ids);
List<User> users = userDao.findInIds(vo);
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、付费专栏及课程。

余额充值