我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mybatis3中@SelectProvider传递参数方式是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mybatis3中@SelectProvider传递参数方式是什么

这篇文章主要讲解了“mybatis3中@SelectProvider传递参数方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mybatis3中@SelectProvider传递参数方式是什么”吧!

mybatis3 @SelectProvider传递参数

一、通常情况下我喜欢使用实体或者vo去传参数

这样在Provide的方法中可以直接通过#{param}(param为你实体中的字段)来获取你要的参数。

二、使用map传参数

在超过一个参数的情况下,@SelectProvide方法必须接受Map<String, Object>做为参数,

如果参数使用了@Param注解,那么参数在Map中以@Param的值为key,如下例中的userId;

如果参数没有使用@Param注解,那么参数在Map中以参数的顺序为key,如下例中的password:

UserMapper.java:

@SelectProvider(type = SqlProvider.class, method = "selectUserCheck")@ResultMap("userMap")public User getUserCheck(@Param("userId") long userId, String password);

SqlProvider.java:

 public String selectUserCheck(Map<String, Object> para) {         return "select * from user where userId=" + para.get("userId") + " and password=' " + para.get("1") + "'";     }

@SelectProvider,@Select和xml用法的一点理解

1.@Select

同@select功能类似的还有@insert,@delete,@update,对应于数据库语句的CRUD。使用@select很方便,不用写配置文件,一般是写在mapper的interface类中,用法如下:

public interface AdmainMapper{@Select("SELECT * FROM userinfo WHERE username = #{username} AND password = #{password}")     @Results(value = {    //@Result这项可以不写             @Result(id = true, column = "id", property = "id"),             @Result(column = "username", property = "username"),             @Result(column = "password", property = "password") })     public Admin selectAdmin(@Param("username") String username,                              @Param("password") String password);//参数可以是一个对象,sql语句会自动匹配}

使用注解的方式很简单但是不是很灵活,对于动态条件查询是无法实现的,这时,我们可以使用xml注解的方式。

2.xml方式

public interface AdminMapper {public List<Admin> getAdminByConditions(@Param("username")String username,                                             @Param("password")String password,                                             @Param("start")int start,                                             @Param("limit")int limit);//参数可以直接传入一个类,在xml中可以自动匹配}

注解的方式和xml的方式可以写在同一个类中,就如上所示,这两个方法可以在同一个类中。这里写上@Param,在xml中就不用使用parameterType属性了。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 上面类的路径--><mapper namespace="com.xxx. ... .AdminMapper">    <!-- 指定字段映射 --><resultMap type="com. ... .Student" id="studentResultMap"> //下面方法返回结果存放类型通过id识别   <id property="id"  column="id"  />   <result property="name" column="name"  />   <result property="age" column="age"  />   <result property="classId" column="classId"  /></resultMap><sql id="Base_Column_List">  //使用这种方法可以使重复使用的字段通过id直接调用即可,很方便   id, name ,age,classId</sql><!-- 若不需要自动返回主键,将useGeneratedKeys="true" keyProperty="id"去掉即可 --> <select id="getAdminByConditions" parameterType="com. ... .StudentVo"  resultMap="studentResultMap">   <![CDATA[ SELECT ]]>      //此id要和mapper中的方法名对应   <include refid="Base_Column_List" />   <![CDATA[ FROM student WHERE 1=1]]>   <if test="id != null"><![CDATA[ AND id = #{id} ]]></if>   <if test="name != null"><![CDATA[ AND name  like CONCAT('%',#{name},'%') ]]></if>   <if test="age != null"><![CDATA[ AND age = #{age} ]]></if>   <![CDATA[ ORDER BY id  DESC  limit  #{startRow} , #{pageSize} ]]></select></mapper>

xml的文件名最好与mapper的名字对应下来。

此外我们还需要对配置文件进行配置,这里我就不多说,大家自行百度

3.@SelectProvider方式

我觉得这种方式集成了前两种方法的优点,用法如下:

public interface AdmainMapper{@SelectProvider(type = SqlBuilder.class, method = "queryList")//指定所用sql语句@ResultMap("student")       List<student> getList(@Param("start") int start,                                @Param("pageSize") int pageSize,                                @Param("apIds") String apIds,                                @Param("model") String model); }
public class SqlBuilder {//与type对应                public String queryList(@Param("start") int start, @Param("pageSize") int pageSize, //于method对应                                @Param("apIds") String apIds, @Param("model") String model) {               String sql = " SELECT ap.* FROM ap WHERE ap.id NOT in ( SELECT apid FROM ap_activity_mapping WHERE del = 0 ";              if (StringUtils.isNotEmpty(apIds)) {                      sql += " and apid not in (" + apIds + ") ";              }              sql += " ) ";              if (StringUtils.isNotEmpty(model)) {                      sql += " and model = '" + model + "'";              }              sql += " GROUP BY ap.id limit " + start + "," + pageSize;               return sql;        }//返回类型必须是String}

用这种方法要注意的是不要重载,此外还接受Map<String, Object>作为参数。

感谢各位的阅读,以上就是“mybatis3中@SelectProvider传递参数方式是什么”的内容了,经过本文的学习后,相信大家对mybatis3中@SelectProvider传递参数方式是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mybatis3中@SelectProvider传递参数方式是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mybatis3中@SelectProvider传递参数方式是什么

这篇文章主要讲解了“mybatis3中@SelectProvider传递参数方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mybatis3中@SelectProvider传递参数方
2023-06-20

Vue中mapMutations传递参数方式是什么

本篇内容主要讲解“Vue中mapMutations传递参数方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue中mapMutations传递参数方式是什么”吧!通过子组件定义的方法传递
2023-06-30

C++参数传递应用方式是什么

本篇内容主要讲解“C++参数传递应用方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++参数传递应用方式是什么”吧!引用是C++中的概念,初学者容易把引用和指针混淆一起。 一下程序中,
2023-06-17

vue-router参数传递的方式是什么

本篇内容介绍了“vue-router参数传递的方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!vue-router传递参数分为两大类
2023-07-04

iframe参数传递的方法是什么

在HTML中,可以使用iframe标签来嵌套其他网页。要传递参数给嵌套的网页,可以使用以下方法:1. URL查询字符串:可以将参数作为URL的查询字符串附加在iframe的src属性中。例如:```html```在嵌套的网页中,可以使用Ja
2023-09-20

django url传递参数的方法是什么

Django中向URL传递参数的方法主要有两种:使用路径参数和使用查询参数。1. 路径参数:路径参数是通过在URL中直接添加参数来传递的。在URL的路径中使用尖括号``来定义参数,并在views中的相应函数中接收参数。例如:```# url
2023-10-09

java string参数传递的方法是什么

在Java中,字符串参数传递的方法是通过将字符串作为参数传递给方法。这可以通过以下几种方式实现:传递字符串字面值:可以直接将字符串字面值作为参数传递给方法。例如:public void printString(String str) {S
2023-10-26

java多参数传递的方法是什么

在Java中,可以使用以下几种方式来实现多参数的传递:使用数组:可以将多个参数封装成一个数组,然后将数组作为方法的参数进行传递。例如:public void myMethod(int[] params) {// 使用params数组中的参数
java多参数传递的方法是什么
2024-02-29

C语言实参与形参的传递方式是什么

在C语言中,实参与形参的传递方式有两种:值传递和地址传递。值传递:当调用函数时,将实参的值复制一份传递给形参,函数内部对形参的操作不会影响到实参的值。这种传递方式适用于基本数据类型(如int、char等)以及结构体、数组等较小的数据类型。地
C语言实参与形参的传递方式是什么
2024-03-11

C#中参数的传递方式详解

本文详细讲解了C#中参数的传递方式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-11-13

Python函数值传递、引用传递、形式参数和实际参数的区别是什么

本篇内容主要讲解“Python函数值传递、引用传递、形式参数和实际参数的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python函数值传递、引用传递、形式参数和实际参数的区别是什么”
2023-06-30

delphi线程传递参数的方法是什么

在Delphi中,可以通过以下方法传递参数给线程:使用构造函数:可以在线程的构造函数中添加参数,然后在创建线程时传递参数。例如:typeTMyThread = class(TThread)privateFParam: Integer;pub
2023-10-27

Postman传递对象参数的方法是什么

这篇文章主要介绍“Postman传递对象参数的方法是什么”,在日常操作中,相信很多人在Postman传递对象参数的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Postman传递对象参数的方法是什么
2023-06-26

PHP 函数的参数传递方式有什么限制?

php 函数参数传递方式:按值传递(副本)和按引用传递(原始变量);限制:只能按引用传递变量且必须赋值。PHP 函数的参数传递方式及限制参数传递方式PHP 中有两种主要的参数传递方式:按值传递(Pass-by-Value):函数副本参数
PHP 函数的参数传递方式有什么限制?
2024-04-15

qt多线程传递参数的方法是什么

在Qt中,可以使用信号和槽机制来在多线程之间传递参数。下面是一种常见的方法:1. 定义一个包含参数的信号和槽函数:```cppclass Worker : public QObject{Q_OBJECTpublic:Worker() {}p
2023-09-27

python多线程传递参数的方法是什么

在Python中,可以使用threading.Thread类来创建多线程,并通过构造函数的args参数传递参数给线程函数。以下是一个示例代码:import threadingdef my_thread_func(arg1, arg2):
python多线程传递参数的方法是什么
2024-02-29

php通过url传递参数的方法是什么

PHP通过URL传递参数的方法有两种:1. 使用GET方法传递参数在URL后面添加参数,格式为`?参数名1=值1&参数名2=值2&...`,例如:```http://example.com/page.php?name=John&age=25
2023-08-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录