MyBatis的mapper.xml文件中入参和返回值的实现

 更新时间:2023年01月09日 14:32:22   作者:造化圣者  
这篇文章主要介绍了MyBatis的mapper.xml文件中入参和返回值的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mapper.xml文件中入参和返回值的写法

关于MyBatis的mapper.xml文件中入参和返回值的书写的问题,相信很多小伙伴都有这方面的问题,由于mybatis中mapper中的方法参数和返回值类型是变化的,而有时入参或者返回值时可以省略的,而有时有时不可省略的。

这就导致大家不知道parameterType,resultType什么时候可以省略,什么时候不能省略,我就在这里讨论一下这个问题。

resultType

1.对于resultType的情况是比较简单的,一般来说增删改中mapper.xml文件中对应的resultType是不需要写的,因为增删改方法的返回值都是影响行数的int,mybatis自行处理,是不需要写的。

例如:

此处的delete标签中入参为Int,而返回值是影响行数的int,此时的resultType是不需要写的,图中也可以看出:使用idea编写时,也没有提示resultType的属性。所以第一种情况就是当增删改标签中的返回值是不需要写的。

2.当resultType指定查询返回的结果集是集合的类型时,则必须是泛型的类型。

例如:

此处的select标签的返回值是List集合,所以resultType为集合的泛型:users。

所以第二种情况就是:当resultType指定查询返回的结果集是集合的类型时,则必须是泛型的类型。

3.其他情况返回值是什么,resultType对应的填即可。

parameterType

1.当参数≥2个的时候,一般使用@Param(“参数名”)进行注解,标签中是可以通过#{参数名}获取到参数的,所以,此时的parameterType也是不用写的。

例如:

此时的入参是两个String类型的参数,所以此时的parameterType是不需要写的。

2. 当入参参数是集合的时候如List,map等,parameterType的书写是可以省略的。

例如:

此处的insert标签中的返回值是影响行数的int,resultType不需要写,而入参是list,也是直接省略不写。

所以第二种情况:当入参参数是集合的时候如List,map等,parameterType的书写是可以省略的。

3.其他情况下,parameterType均正常填写。

mapper.xml配置文件的参数说明

id:标签只能修改主键字段

  • Result:除了主键以外的字段;
  • Column:数据库中的字段名称;
  • jdbcType:列数据库中字段的类型(可以省略不写);

resultMap的作用

(1)当数据库中字段名与实体类对象的属性名不一致时,可以进行转换;

(2)当前查询的结果没有对应一个表时,可以自定义一个结果集;

Sql语句片段,将公共部分抽取出来,通过include标签进行引用;

Suffixoverrides,去除多余的逗号;

注意:如果数据库中字段名称由多个单词构成,通过mybatis逆向工程生成的对象属性名称会按照驼峰命名法规则生成属性名称,其中:数据库中字段名称由多个单词构成的时候必须使用—下划线分隔。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Jax-rs规范REST接口文件上传代码实例

    Jax-rs规范REST接口文件上传代码实例

    这篇文章主要介绍了Jax-rs规范REST接口文件上传代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • javamail 发送邮件的实例代码分享

    javamail 发送邮件的实例代码分享

    今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题。为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用
    2013-08-08
  • java正则表达式判断强密码和随机生成强密码代码示例

    java正则表达式判断强密码和随机生成强密码代码示例

    这篇文章主要给大家介绍了关于java正则表达式判断强密码和随机生成强密码的相关资料,最近需要一个密码强度正则表达式在用户注册时校验用户密码强度,需要的朋友可以参考下
    2023-08-08
  • springboot整合quartz项目使用案例

    springboot整合quartz项目使用案例

    quartz是一个定时调度的框架,就目前市场上来说,其实有比quartz更优秀的一些定时调度框架,不但性能比quartz好,学习成本更低,而且还提供可视化操作定时任务,这篇文章主要介绍了springboot整合quartz项目使用(含完整代码),需要的朋友可以参考下
    2023-05-05
  • 关于java中可变长参数的定义及使用方法详解

    关于java中可变长参数的定义及使用方法详解

    下面小编就为大家带来一篇关于java中可变长参数的定义及使用方法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • SpringBoot中@Scheduled实现服务启动时执行一次

    SpringBoot中@Scheduled实现服务启动时执行一次

    本文主要介绍了SpringBoot中@Scheduled实现服务启动时执行一次,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • SpringBoot实现多租户架构

    SpringBoot实现多租户架构

    在SpringBoot中可以通过多数据源和动态路由来实现多租户机制,本文主要介绍了SpringBoot实现多租户架构,具有一定的参考价值,感兴趣的可以里哦啊接一下
    2024-03-03
  • 关于Java中阻塞队列BlockingQueue的详解

    关于Java中阻塞队列BlockingQueue的详解

    这篇文章主要介绍了关于Java中阻塞队列BlockingQueue的详解,BlockingQueue是为了解决多线程中数据高效安全传输而提出的,从阻塞这个词可以看出,在某些情况下对阻塞队列的访问可能会造成阻塞,需要的朋友可以参考下
    2023-05-05
  • MyBatisPlus代码生成器的使用示例

    MyBatisPlus代码生成器的使用示例

    本文主要介绍了MyBatisPlus代码生成器的使用示例,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,感兴趣的可以了解一下
    2021-12-12
  • 如何利用SpringBoot搭建WebService服务接口

    如何利用SpringBoot搭建WebService服务接口

    之前项目经理想要开发一个webservice的协议,给我一个星期的时间,后面用springboot开发了webservice,这篇文章主要给大家介绍了关于如何利用SpringBoot搭建WebService服务接口的相关资料,需要的朋友可以参考下
    2023-11-11

最新评论