Files
TimiServerAPI/src/main/resources/mapper/blog/ArticleMapper.xml
2025-12-05 12:35:47 +08:00

57 lines
1.5 KiB
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="com.imyeyu.api.modules.blog.mapper.ArticleMapper">
<sql id="table">article</sql>
<!-- 查询列表的文章字段 -->
<sql id="listColumn">
`id`,
`type`,
`title`,
`digest`,
`likes`,
`reads`,
`created_at`,
`updated_at`
</sql>
<!-- 列表 -->
<sql id="normalCondition">
FROM
article
WHERE
can_list IS TRUE
AND deleted_at IS NULL
</sql>
<select id="countByPage" resultType="long">
SELECT COUNT(1) <include refid="normalCondition" />
</select>
<select id="listByPage" resultType="com.imyeyu.api.modules.blog.entity.Article">
SELECT
<include refid="listColumn" />
<include refid="normalCondition" />
ORDER BY
COALESCE(updated_at, created_at) DESC
LIMIT
#{offset}, #{limit}
</select>
<!-- 根据关键字获取列表 -->
<sql id="byKeywordCondition">
<include refid="normalCondition" />
AND (
`title` LIKE CONCAT('%', #{keyword}, '%')
OR `digest` LIKE CONCAT('%', #{keyword}, '%')
)
</sql>
<select id="countByKeyword" resultType="long">
SELECT COUNT(1) <include refid="byKeywordCondition" />
</select>
<select id="selectByKeyword" resultType="com.imyeyu.api.modules.blog.entity.Article">
SELECT
<include refid="listColumn" />
<include refid="byKeywordCondition" />
ORDER BY
COALESCE(updated_at, created_at) DESC
LIMIT
#{offset}, #{limit}
</select>
</mapper>