浅谈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常用工具类汇总 附示例代码
Jun 26 Java/Android
SpringBoot SpringEL表达式的使用
Jul 25 Java/Android
简述Java中throw-throws异常抛出
Aug 07 Java/Android
JavaCV实现照片马赛克效果
Jan 22 Java/Android
springmvc直接不经过controller访问WEB-INF中的页面问题
Feb 24 Java/Android
springboot应用服务启动事件的监听实现
Apr 06 Java/Android
Java 通过手写分布式雪花SnowFlake生成ID方法详解
Apr 07 Java/Android
教你在 Java 中实现 Dijkstra 最短路算法的方法
Apr 08 Java/Android
零基础学java之方法的定义与调用详解
Apr 10 Java/Android
Java死锁的排查
May 11 Java/Android
springcloud整合seata
May 20 Java/Android
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
Jul 07 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 array_unique之后json_encode需要注意
2011/01/02 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
跟老齐学Python之类的细节
2014/10/13 Python
python清除字符串中间空格的实例讲解
2018/05/11 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
Python实现扫码工具的示例代码
2020/10/09 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
哈萨克斯坦最大的时装、鞋子和配饰在线商店:Lamoda.kz
2019/11/19 全球购物
小学一年级数学教学计划
2015/01/20 职场文书
民间借贷被告代理词
2015/05/23 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
Python实现简单的猜单词
2021/06/15 Python
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL
关于使用Redisson订阅数问题
2022/01/18 Redis
详解SQL报错盲注
2022/07/23 SQL Server