Mybatis动态SQL

条件查询

姓名:进行模糊查询

性别:进行精准匹配

入职时间:要求进行范围查询

并且要求根据最后修改时间进行倒序排序

select*from emp where name like '%张' and entrydate between '2010-01-01' and '2020-01-01' order by update_time desc;

方式一:

@select("select *from emp where name like '%${name}%' and gender =#{gender} and entrydate between #{begin} and #{end} order by update_time desc")

public List<Emp> list

2.1     XML映射文件

使用Mybatis的注解,主要是完成一些简单的增删改查功能;如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL写在XML配置文件中;

SQL映射配置文件中的是需要符合一定的规范的:

1.XMl映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)

2.XML映射文件的namespace属性为Mapper接口全限定名一致;

3.XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持参数类型和返回值类型一致

xml映射文件模板

<?xml version=”1.0“ encoding="UTF-8" ?>

<!DOCTYPE mapper

      PUBLIC "-//mybatis.org//DTO Mapper 3.0//EN"

      "http: //mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="接口全限定名”>

<select id="接口方法名 resultType=" 返回值类型">

<!--sql语句-->

</select>

</mapper>

<select>标签的resultType属性,指的是查询返回的单条记录所封装的类型

2.2 if

用于判断条件是否成立,使用test属性进行条件判断,如果条件为true,则拼接sql;

条件查询

接下来,我们就通过<if>标签来改造上述的条件查询

EmpMapper接口方法

public List<Emp> list(String name,Short gender,LocalDate begin, LocalDate end);

EmpMapper.xml

<select id="list"  resultType="com.itheima.pojo.Emp">

select id,username,password , name ,gender ,image,job,entrydate,dept_id,create_time,update_time from emp

where

<if test="name !=null">

name like concat('%',#{name},'%')

</if>

<if test="gender !=null">

and gender =#{gender}

</if>

<if test="begin !=null and end !=null">

and entrydate between #{begin} and #{end}

</if>

order by update_time desc

</select>

然后我们就可以进行测试了,我们可以传递不同的条件,然后通过日志查看组装执行的SQL语句;

进行测试之后我们发现,上述的SQL语句的配置是有问题的

A。如果,我们没有传递第一个参数,此时输出的SQL语句中,我们会看到多了一个where之后多了一个and

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值