MyBatis之特别篇

来源:互联网 发布:软件项目管理pdf 编辑:程序博客网 时间:2024/03/29 17:59

实体类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中的对象的类型即可 ,否则会报错
这里写图片描述

原创粉丝点击