浅谈sql_@SelectProvider及使用注意说明


Posted in Java/Android onAugust 04, 2021

sql_@SelectProvider及使用注意

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SelectProvider {
  Class<?> type();
  String method();
}

RoleDao.java

public interface RoleDao {
    @SelectProvider(type=RoleProvider.class,method="queryRolesByParamsSql")
    List<Role> queryRolesByParams(RoleQuery roleQuery);
}

RoleProvider.java

public class RoleProvider {
    public String queryRolesByParamsSql(@Param("roleName") final String roleName){
        return new SQL(){
            {
                SELECT("id,role_name as roleName,role_remark as roleRemark,"
                + "create_date as createDate,update_date as updateDate,"
                + " is_valid as isValid");
                FROM("t_role");
                WHERE("is_valid=1");
                if(StringUtils.isNoneBlank(roleName)){
                    WHERE("role_name like concat('%',#{roleName},'%')");
                }
            }
        }.toString();
    }
}

RoleMapper.xml

<select id="queryRolesByParams" resultType="role">
        select <include refid="role_column" /> 
        from t_role
        <where>
            is_valid = 1
            <if test="roleName !=null and roleName !=''">
                 and role_name like concat('%',#{roleName},'%')
            </if>

        </where> 
  </select>

注:

@SelectProvider 和 PageHelper 一起使用可能报错

报错是这样的

There is no getter for property named 'providerTakesParameterObject'

问题描述:

使用@SelectProvider注解,进行查询的时候报错

浅谈sql_@SelectProvider及使用注意说明

下面也是是这个问题引起的,重启Eclipse可能出现这个提示

Source not found for org.mortbay.io.nio.SelectChannelEndPoint

浅谈sql_@SelectProvider及使用注意说明

解决原因:

项目中使用了PageHelper 进行分页,与@@SelectProvider这个注解不能一起使用

浅谈sql_@SelectProvider及使用注意说明

不使用 PageHelper 这个插件,sql是正常运行的

浅谈sql_@SelectProvider及使用注意说明

解决方式:改用 xml 进行sql 查询

同样问题,其他解决方式参考:

https://stackoverflow.com/questions/37744893/how-can-sqlprovider-take-more-than-1-param-in-mybatis

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
springboot利用redis、Redisson处理并发问题的操作
Jun 18 Java/Android
Java实现二维数组和稀疏数组之间的转换
Jun 27 Java/Android
解决SpringBoot文件上传临时目录找不到的问题
Jul 01 Java/Android
SpringBoot快速入门详解
Jul 21 Java/Android
springboot 自定义配置 解决Boolean属性不生效
Mar 18 Java/Android
Netty分布式客户端接入流程初始化源码分析
Mar 25 Java/Android
java如何实现获取客户端ip地址的示例代码
Apr 07 Java/Android
Android自定义双向滑动控件
Apr 19 Java/Android
解决springboot druid数据库连接失败后一直重连的方法
Apr 19 Java/Android
Java界面编程实现界面跳转
Jun 16 Java/Android
springboot 全局异常处理和统一响应对象的处理方式
Jun 28 Java/Android
Spring boot实现上传文件到本地服务器
Aug 14 Java/Android
mybatis3中@SelectProvider传递参数方式
Aug 04 #Java/Android
浅谈Java父子类加载顺序
Aug 04 #Java/Android
浅谈spring boot使用thymeleaf版本的问题
Aug 04 #Java/Android
Java后台生成图片的完整步骤
Aug 04 #Java/Android
在Spring-Boot中如何使用@Value注解注入集合类
Aug 02 #Java/Android
SpringBoot整合RabbitMQ的5种模式实战
Log4j.properties配置及其使用
Aug 02 #Java/Android
You might like
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
python list使用示例 list中找连续的数字
2014/01/27 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
python re模块findall()函数实例解析
2018/01/19 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
学习和使用python的13个理由
2019/07/30 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
涂鸦板简单实现 Html5编写属于自己的画画板
2016/07/05 HTML / CSS
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
中西医专业毕业生职业规划书
2014/02/24 职场文书
战略合作意向书范本
2014/04/01 职场文书
党员群众路线承诺书
2014/05/20 职场文书
树转促学习心得体会
2014/09/10 职场文书
JavaScript实现队列结构过程
2021/12/06 Javascript
AngularJS实现多级下拉框
2022/03/25 Javascript
Python加密技术之RSA加密解密的实现
2022/04/08 Python