mybaties模糊查询按时间查询

<select id="listUserFavorites" parameterMap="favoritesParam"  resultType="hashmap">
	     select 
			fa.favorites_id as favoritesId,
			fa.target_id as targetId,
			fa.target_sku as targetSku,
			fa.target_url as targetUrl,
			fa.favorites_time as favoritesTime,
			g.goods_img as goodsImg,
            g.tags as tags,
            g.goods_name as goodsName,
			sku.sku_name as skuName,
            sku.shop_price as goodsPrice 
	    from  US_favorites fa,gd_goods g,gd_goods_sku sku
		where fa.target_id=g.goods_id and fa.target_sku=sku.sku_id and fa.user_id=#{userId, jdbcType=INTEGER}
	   <where>
			<trim prefixOverrides="and">
				<if test="goodsName != null">and g.goods_name like concat('%',#{goodsName},'%')</if>
				<if test="seachTime!=null and seachTime!=''">
   				  <![CDATA[   and DATE_FORMAT(fa.favorites_time, '%Y-%m-%d')<=DATE_FORMAT(#{seachTime!}, '%Y-%m-%d')   ]]>
				</if>
			</trim>
		</where>
	    order by fa.favorites_time desc
        <if test="size != -1">
		   limit #{start},#{size}
		</if>       
	</select>

### MyBatis 分页查询示例代码 #### 使用 Redis 缓存优化分页查询的服务层实现 为了提高性能并减少数据库的压力,可以采用Redis缓存来存储不常变动数据的总数。下面是一个`UserService`类中的方法用于获取带有缓存功能的用户列表: ```java public class UserService { @Autowired private UserMapper userMapper; @Autowired private RedisTemplate<String, Object> redisTemplate; /** * 获取带缓存机制的分页用户信息 */ public PageInfo<User> getUsersWithCache(int pageNum, int pageSize, String status) { String cacheKey = "user:count:" + status; Integer total = (Integer) redisTemplate.opsForValue().get(cacheKey); if (total == null) { Map<String, Object> params = new HashMap<>(); params.put("status", status); total = userMapper.countUsersEfficiently(params); redisTemplate.opsForValue().set(cacheKey, total, 5, TimeUnit.MINUTES); } PageHelper.startPage(pageNum, pageSize); List<User> users = userMapper.selectByStatus(status); return new PageInfo<>(users).setTotal(total.longValue()); } } ``` 此段代码展示了如何通过引入Redis作为缓存解决方案的一部分,在执行实际SQL之前先尝试读取已有的计数结果[^1]。 #### Mapper XML 文件配置 接着是在`UserMapper.xml`文件里定义具体的SQL语句来进行条件筛选以及分页操作: ```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.example.mapper.UserMapper"> <!-- 查询符合条件记录数量 --> <select id="countUsersEfficiently" parameterType="map" resultType="_int"> SELECT COUNT(*) FROM `user` WHERE status = #{status,jdbcType=VARCHAR} </select> <!-- 根据状态字段进行过滤,并返回指定范围内的行 --> <select id="selectByStatus" parameterType="string" resultMap="BaseResultMap"> SELECT * FROM `user` WHERE status = #{status,jdbcType=VARCHAR} LIMIT #{_parameter.offset},#{_parameter.limit}; </select> </mapper> ``` 这里提供了两个映射器接口的方法:一个是用来计算满足特定条件下用户的总条目数目;另一个则是真正实现了基于给定的状态参数从表中检索部分记录的功能[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值