实体类User.java
import java.io.Serializable;
/**
* 用户的这个实体
*
*/
public class User implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private int uId;
private String uName;
private String uPassword;
public User() {
super();
}
public User(int uId, String uName, String uPassword) {
super();
this.uId = uId;
this.uName = uName;
this.uPassword = uPassword;
}
public int getuId() {
return uId;
}
public void setuId(int uId) {
this.uId = uId;
}
public String getuName() {
return uName;
}
public void setuName(String uName) {
this.uName = uName;
}
public String getuPassword() {
return uPassword;
}
public void setuPassword(String uPassword) {
this.uPassword = uPassword;
}
@Override
public String toString() {
return "User [uId=" + uId + ", uName=" + uName + ", uPassword="
+ uPassword + "]";
}
}
映射文件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="userMapper">
<!-- 需求:假设我需要查询所给用户id的所有用户 (必须适使用集合来实现) -->
<!--给定一连串的用户id 然后来 获取用户的对象值-->
<select id="findUserByIds" parameterType="java.util.List" resultType="com.wc.test01.User">
select * from t_user
<!--使用动态的sql来进行拼接
collection:集合对象的名字你记住 list集合对象的对象就是 list
item:每一次遍历出来的对象 名字是可以随便写的 但是 一般要见名之意
open:拼接Sql之前以什么开始 就是在遍历数据之前
close:就是以什么结尾 结束符
separator:遍历出来的数据以什么进行分割
-->
<foreach collection="list" item="id" open="where uId in(" separator="," close=")">
#{id}
</foreach>
</select>
<!-- 需求:假设我需要查询所给用户id的所有用户 (必须适使用集合来实现) 集合可以为null-->
<!--给定一连串的用户id 然后来 获取用户的对象值-->
<select id="findUserByIdsIsNull" parameterType="java.util.List" resultType="com.wc.test01.User">
select * from t_user
<!--使用动态的sql来进行拼接
collection:集合对象的名字你记住 list集合对象的对象就是 list
item:每一次遍历出来的对象 名字是可以随便写的 但是 一般要见名之意
open:拼接Sql之前以什么开始 就是在遍历数据之前
close:就是以什么结尾 结束符
separator:遍历出来的数据以什么进行分割
-->
<!--if条件判断的用法-->
<if test="list!=null">
<foreach collection="list" item="id" open="where uId in(" separator="," close=")">
#{id}
</foreach>
</if>
</select>
<!--多条件的查询,且条件不定-->
<select id="findUserByManyCondition" parameterType="map" resultType="com.wc.test01.User">
select * from t_user
<!--where 条件还可以这样写-->
<include refid="bobo"></include>
</select>
<!--下面定义的是sql的片段-->
<sql id="bobo">
<where>
1=1
</where>
<if test="uName!=null and uName!=''">
and uName=#{uName}
</if>
<if test="uPassWord!=null and uPassWord!=''">
and uPassWord=#{uPassWord}
</if>
</sql>
<!--通过用户的名字来查询用户
如果传递过来的是数组的话那么 接受的时候使用 接受的数据类型使用 list来接受
-->
<select id="findUserbyNames" parameterType="list" resultType="com.wc.test01.User">
select * from t_user where 1=1
<!--如果传递过来是数组的话那么下面的对象的名字 就必须是 array-->
<foreach collection="array" item="name" open="and uName in(" separator="," close=")">
#{name}
</foreach>
</select>
<!-- list结合中是user的这种情况,注返回结果如果是一个集合,不能写成List形式,只需要写List中的对象的类型即可-->
<select id="findUserbyNames1" parameterType="list" resultType="com.wc.test01.User">
select * from t_user where 1=1
<!--如果传递过来是数组的话那么下面的对象的名字 就必须是 array-->
<foreach collection="list" item="user" open="and uName in(" separator="," close=")">
#{user.uName}
</foreach>
</select>
</mapper>
注:返回结果如果是一个集合,不能写成List形式,只需要写List中的对象的类型即可 ,否则会报错