Mybatis 自定义排序

本文介绍了一种使用MyBatis框架结合JavaBean进行动态SQL查询的方法,通过UserReq类携带用户ID、用户名、密码及排序字段集合,实现数据库中用户信息的灵活查询。展示了如何在Mapper接口定义查询方法,以及在XML映射文件中利用foreach标签动态拼接ORDER BY子句。

入参javaBean

import lombok.Data;
import java.io.Serializable;
import java.util.List;
​
@Data
public class UserReq implements Serializable {
    private Long id;
    private String username;
    private String password;
    private List<OrderFiled> orderFields;
}
​
import lombok.Data;
import java.io.Serializable;
@Data
public class OrderFiled implements Serializable {
    private String orderField;
    private String orderType;
}

 

Dao

public interface UserMapper {
    List<User> getAllByOrderFiled(UserReq userReq);
}

 

xml

    <select id="getAllByOrderFiled" parameterType="com.springboot.req.UserReq" resultMap="baseResultMap">
        select id, username, password from user
        <if test="orderFields !=null and orderFields.size() > 0 ">
            order by
            <foreach item="item" index="index" collection="orderFields" separator=",">
                ${item.orderField} ${item.orderType}
            </foreach>
        </if>
    </select>

 

接口调用示例

    @Test
    public void getAllByOrderFiledTest(){
        UserReq userReq = new UserReq();
        List<OrderFiled> orderFileds = new ArrayList<>();
        OrderFiled filed = new OrderFiled();
        filed.setOrderField("username");
        filed.setOrderType("desc");
        orderFileds.add(filed);
        filed = new OrderFiled();
        filed.setOrderField("password");
        filed.setOrderType("ASC");
        orderFileds.add(filed);
        userReq.setOrderFields(orderFileds);
​
        List<User> users = userMapper.getAllByOrderFiled(userReq);
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值