浅谈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 相关文章推荐
java中重写父类方法加不加@Override详解
Jun 21 Java/Android
详解Java实现数据结构之并查集
Jun 23 Java/Android
Java图书管理系统,课程设计必用(源码+文档)
Jun 30 Java/Android
Java org.w3c.dom.Document 类方法引用报错
Aug 07 Java/Android
java中用float时,数字后面加f,这样是为什么你知道吗
Sep 04 Java/Android
关于springboot配置druid数据源不生效问题(踩坑记)
Sep 25 Java/Android
Java 获取Word中所有的插入和删除修订的方法
Apr 06 Java/Android
Java线程的6种状态与生命周期
May 11 Java/Android
springcloud整合seata
May 20 Java/Android
Java多线程并发FutureTask使用详解
Jun 28 Java/Android
向Spring IOC 容器动态注册bean实现方式
Jul 15 Java/Android
java获取一个文本文件的编码(格式)信息
Sep 23 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 echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
python回调函数用法实例分析
2015/05/09 Python
python 字典(dict)按键和值排序
2016/06/28 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
python web框架 django wsgi原理解析
2019/08/20 Python
django连接oracle时setting 配置方法
2019/08/29 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
python设置中文界面实例方法
2020/10/27 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书