使用Mybatis如何实现多个控制条件查询

目录

  • 实现多个控制条件查询
    • 扩展知识
    • 实现多个条件简单查询
    • 数据库的字段名和实体类的属性名不一致时
    • 实现多个条件复杂查询
  • MyBatis条件查询总结
    • 1.if条件语句
    • 2.choose(whenotherwise)
    • 4.in的用法
    • 5.模糊查询

实现多个控制条件查询
扩展知识
1.给包起别名用标签
< typeAliases>< typeAlias type=“MybatiesAnimal.Animal” alias=“animal”/>< !-- 指定实体类在哪个包里 -->< package name=“MybatiesAnimal”/>< /typeAliases>

2.在中通过标签引Mapper.xml
使用Mybatis如何实现多个控制条件查询
文章图片

如果想用package直接引入所有mapper/xml, 那么要求接口和xml在一个包里

实现多个条件简单查询
操作步骤如下:
1.在Mapper.xml中输入要查询的SQL语句
使用Mybatis如何实现多个控制条件查询
文章图片

2.接口文件中参数用@Param接
语句如下:
public List selAnimalBy(@Param(“NAME”) String a,@Param(“kind”) String b);

如果传的是2个java简单类型 那么需要用@Param(“name”) 指定参数名
3.text文档中输出
语句如下:
List< Animal> animal1=sqlsession.getMapper(AnimalMapper.class).selAnimalBy(“老虎”, “猫科”); System.out.println(animal1);


数据库的字段名和实体类的属性名不一致时
因为数据库命名多个单词之间用下划线连接,而Java命名规则为第二个字母大写,命名规则不同时,需要传值。
方法一:修改SQL语句
SELECT a_sid sid,kind,numbers,address,NAME FROM animal

给a_sid 取别名为sid
xml中语句修改如下:
使用Mybatis如何实现多个控制条件查询
文章图片

方法二:通过配置resultMap标签
原查询语句:
< select id=“selAnimalBy” resultType=“animal” >SELECT * FROM animal WHERE NAME=#{NAME} AND kind=#{kind}< /select>

修改为:
使用Mybatis如何实现多个控制条件查询
文章图片


实现多个条件复杂查询
例如:查询动物列表中猫科中包含虎字段的数据
使用Mybatis如何实现多个控制条件查询
文章图片

SQL语句为:
SELECT * FROM animal WHERE 1=1 AND kind=“猫科” AND NAME LIKE ‘%虎%'

1.配置xml中的select标签
如下图:
使用Mybatis如何实现多个控制条件查询
文章图片

2.添加接口中的执行语句
public List< Animal> selCon(Animal animal);

3.text文档检验结果
Animal animal1=new Animal(); animal1.setKind(“猫科”); animal1.setName(“虎”); List< Animal>animal2=sqlsession.getMapper(AnimalMapper.class).selCon(animal1); System.out.println(animal2);

输出结果如下:
使用Mybatis如何实现多个控制条件查询
文章图片


MyBatis条件查询总结
1.if条件语句
SELECT ST.STUDENT_ID,ST.STUDENT_NAME,ST.STUDENT_SEX,ST.STUDENT_BIRTHDAY,ST.STUDENT_PHOTO,ST.CLASS_ID,ST.PLACE_IDFROM STUDENT_TBL STWHEREST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName, jdbcType=VARCHAR}),'%')AND ST.STUDENT_SEX = #{studentSex, jdbcType=INTEGER}AND ST.STUDENT_BIRTHDAY = #{studentBirthday, jdbcType=DATE}AND ST.CLASS_ID = #{classId, jdbcType=VARCHAR}AND ST.CLASS_ID = #{classEntity.classId, jdbcType=VARCHAR}AND ST.PLACE_ID = #{placeId, jdbcType=VARCHAR}AND ST.PLACE_ID = #{placeEntity.placeId, jdbcType=VARCHAR}AND ST.STUDENT_ID = #{studentId, jdbcType=VARCHAR}


2.choose (when otherwise)
SELECT *FROM User uu.username LIKE CONCAT(CONCAT('%', #{username, jdbcType=VARCHAR}),'%')AND u.sex = #{sex, jdbcType=INTEGER}AND u.birthday = #{birthday, jdbcType=DATE}

select * from t_blog where 1 = 1 and title = #{title}and content = #{content}and owner = "owner1"


4.in的用法
SELECTFROM tb_problemWHERE id IN#{id}

还可以这样
SELECT*FROMproduct_db.product pWHEREp.isvalid = 1#{item}//查询condition类Public OpenProductQueryCondition{private Integer productId; private List list; }


5.模糊查询
select from usersname like "%"#{name}"%"and phone like concat(concat("%",#{phone}),"%")and email like #{pattern}

【使用Mybatis如何实现多个控制条件查询】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    推荐阅读