MyBatis之特别篇

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值