SSM框架中写sql在dao文件中以注解的方式

1以注解方式

//两个参数其中一个是对象需写,对象.属性

@Update("update delivery_address set consignee = #{address.consignee},country = #{address.country},city = #{address.city},address = #{address.address},phone_number = #{address.phoneNumber},telnumber = #{address.telNumber},zipcode = #{address.zipcode},update_time = UNIX_TIMESTAMP(NOW())*1000 where id = #{id}") void update(@Param("address") Address address, @Param("id") Long id);

 

OrderProvider.class

另外一种写法

  @Select("<script>" +
            "SELECT COUNT(*) FROM excel_template   " +
            " where create_uid = ${sqlMap.create_uid} and is_delete = 0 " +
            "<if test=\"sqlMap.end_time != null and sqlMap.end_time != '' \"> and UNIX_TIMESTAMP(create_date) ${sqlMap.end_time} </if>" +
            "<if test=\"sqlMap.start_time != null and sqlMap.start_time != ''\"> and UNIX_TIMESTAMP(create_date) >= ${sqlMap.start_time} </if>" +
            "<if test=\"sqlMap.keyword != null and sqlMap.keyword != ''\"> and (file_name like CONCAT('%',#{sqlMap.keyword},'%') )</if>" +
            "</script>")
    int countList(PageBean<ExcelTemplate> pageBean);

 在上一篇中提到查询中in()语句用foreach查询

现在用另外一种方式自定义注解方式

public List<TaskChildFinished> findListByIds(String ids) {
        List<Long> idList = StringUtils.stringToLongList(ids);
        List<TaskChildFinished> taskChildFinisheds = endProductDao.findListByIds(idList);
        return this.format(taskChildFinisheds);
}
 public static List<Long> stringToLongList(String string){
        return Arrays.asList(string.split(",")).stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
 }
   @Select("select * from task_child_finished where id in (#{idList})")
    @Lang(SimpleSelectInLangDriver.class)
    List<TaskChildFinished> findListByIds(@Param("idList")List<Long> ids);
public class SimpleSelectInLangDriver extends XMLLanguageDriver implements LanguageDriver {

    private static final Pattern inPattern = Pattern.compile("\\(#\\{(\\w+)\\}\\)");

    @Override
    public SqlSource createSqlSource(Configuration configuration, String script, Class<?> parameterType) {

        Matcher matcher = inPattern.matcher(script);
        if (matcher.find()) {
            script = matcher.replaceAll("<foreach collection=\"$1\" item=\"_item\" open=\"(\" "
                    + "separator=\",\" close=\")\" >#{_item}</foreach>");
        }

        script = "<script>" + script + "</script>";
        return super.createSqlSource(configuration, script, parameterType);
    }
}

 

转载于:https://www.cnblogs.com/G-JF/p/9305262.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值