个人技术总结——SpringBoot框架之复合条件查询
个人技术总结——SpringBoot框架之复合条件查询
1、技术概述
- 描述这个技术是做什么
- 用于对已有数据的条件查询,返回符合条件的数据
- 学习该技术的原因
- 对于多而杂的数据,我们需要找到自己所需要的内容,所以组合条件查询就十分必要
- 技术的难点在哪里
- 难点在于DAO层的动态sql语句
2、技术详述
描述你是如何实现和使用该技术的,要求配合代码和流程图详细描述。可以再细分多个点,分开描述各个部分。
- 主要步骤如下:
- 详细描述:
-
确定参数,封装:CmsBulletinQuery.java
-
加入controller参数中,不用注解
-
service接口增加Query参数
-
手写DAO:CmsBulletinDAO.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="edu.fzu.zhishe.core.dao.CmsBulletinDAO">
<resultMap id="BulletinResultMap" type="edu.fzu.zhishe.core.dto.CmsBulletinsDTO">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="title" jdbcType="VARCHAR" property="title" />
<result column="body" jdbcType="VARCHAR" property="body" />
<result column="create_at" jdbcType="TIMESTAMP" property="createAt" />
<result column="update_at" jdbcType="TIMESTAMP" property="updateAt" />
</resultMap>
<select id="listBulletin" parameterType="java.lang.Integer" resultMap="BulletinResultMap">
SELECT
p.id,
p.club_id,
p.title,
p.body,
p.create_at,
p.update_at
FROM
cms_bulletin AS p
WHERE
p.club_id = #{clubId}
<if test="bulletinQuery.title != null and bulletinQuery.title != ''">
AND p.title LIKE concat("%",#{bulletinQuery.title},"%")
</if>
<if test="bulletinQuery.body != null and bulletinQuery.body != ''">
AND p.body LIKE concat("%",#{bulletinQuery.body},"%")
</if>
ORDER BY
p.update_at DESC
</select>
</mapper>
3、技术使用中遇到的问题和解决过程。
其实最开始遇到的问题是不知道步骤,但是请教了组长,他也给了我很详细的步骤(如上所诉)
接下来的问题就是手写DAO中sql语句的编写,不是编译错误就是与预期结果不同,最终才发现是某些符号或位置错误或打错,所以说,打代码时一定要细心,一个小小的符号可能导致结果的大不同。(主要参考组里大佬的文件 FmsPostDAO.xml)
4、总结。
一开始前端给我提出这个要求时,我感觉有点难以实现(凭自己的实力),但是请教了组长之后,实现起来还是可以上手的,所以说遇到问题觉得难时,不要轻易放弃,要用于尝试,也可以请教大佬。大数据时代,查询应该可以说是必不可少的,可以多多学习。
5、列出参考文献、参考博客(标题、作者、链接)
主要的步骤、思路等都是由组长(组长的博客)提供,所以暂无其他参考