浅谈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 相关文章推荐
分析Netty直接内存原理及应用
Jun 14 Java/Android
Java常用工具类汇总 附示例代码
Jun 26 Java/Android
图解排序算法之希尔排序Java实现
Jun 26 Java/Android
分析并发编程之LongAdder原理
Jun 29 Java/Android
gateway与spring-boot-starter-web冲突问题的解决
Jul 16 Java/Android
springboot中rabbitmq实现消息可靠性机制详解
Sep 25 Java/Android
java多态注意项小结
Oct 16 Java/Android
mybatis源码解读之executor包语句处理功能
Feb 15 Java/Android
正则表达式拆分url实例代码
Feb 24 Java/Android
Java实现注册登录跳转
Jun 16 Java/Android
Java中的Kotlin 内部类原理
Jun 16 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代码
2006/12/06 PHP
重新封装zend_soap实现http连接安全认证的php代码
2011/01/12 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
javascript调试说明
2010/06/07 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
2011/07/26 Javascript
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
动态加载script文件的两种方法
2013/08/15 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
js实现贪吃蛇小游戏
2019/10/29 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
python实现大文件分割与合并
2019/07/22 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
python 实现的车牌识别项目
2021/01/25 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
秘书行业自我鉴定范文
2013/12/30 职场文书
办公室主任先进事迹
2014/01/18 职场文书
导游词范文
2015/02/13 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
2022/04/02 Servers