Mybatis基础学习5——SQL标签

Mybatis基础学习5——SQL标签

<if> <else>标签

    <select id="getUserByUserName" parameterType="com.hhh.spring.demo.bean.User" resultType="com.hhh.spring.demo.bean.User">
        <!-- SELECT * FROM USER WHERE username LIKE #{name} -->
        SELECT * FROM USER
        where 1=1
        <if test="username != null and username != ''">
           and username LIKE '%${username}%'
        </if>
        <if test="sex !=null and sex != ''">
            and sex = '2'
        </if>
    </select>

<where> 标签

where 1=1用于动态SQL,这里可用where标签来代替

<where>
  <if test="username != null and username != ''">
  	and username LIKE '%${username}%'
  </if>
  <if test="sex !=null and sex != ''">
  	and sex = '1'
  </if>
</where>

sql片段

在一些公用的sql语句,我们可以将其抽离,在使用的时候通过inclide 进行引入

<sql id="user_sql">
    `username`,
    `birthday`,
    `sex`,
    `address`,
    `uuid2`
</sql>

    <select id="getUserById" parameterType="int" resultType="com.hhh.spring.demo.bean.User">
        SELECT
        <include refid="user_sql"/>
        FROM
        USER
        WHERE id = #{id1}
    </select>

foreach标签

<select id="getUserByIds" parameterType="com.hhh.spring.demo.bean.QueryVo" resultType="com.hhh.spring.demo.bean.User">
    SELECT
    <include refid="user_sql"/>
    FROM
    USER
    <where>
        <!-- foreach 循环标签
            collection:要遍历额集合
            open:循环开始之前输出的内容
            item:设置循环变量
            separator:分隔符
            close:循环结束之后输出内容
        -->
        <foreach collection="ids" open="id IN (" item ="uid" separator="," close=")">
            #{uid}
        </foreach>
    </where>
</select>

// 使用时的代码
 @Override
    public List<User>  getUserByIds(QueryVo vo) {
        SqlSessionFactory sqlSessionFactory = 					  SqlSessionnFactoryUtils.getSqlSessionFactory();
        // 创建SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 获取映射对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        // 执行命令
        List<User>  mUsers = mapper.getUserByIds(vo);
        // 释放对象
        sqlSession.close();

        return mUsers;
    }


 @Test
public void demo1() throws Exception {
   UserDao userDao = new UserDaoImpl();
   QueryVo queryVo = new QueryVo();
   queryVo.setIds(Arrays.asList(1,25,29,30,35));

   List<User> users = userDao.getUserByIds(queryVo);
   System.out.println(users);
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值