在使用mybatis的时候,除了可以使用@param注解,mybatis @param省略
00-1010 1.创建mybatis 2的新演示项目。添加-parameters后的执行结果如下3。环境配置:?你为什么不在springboot项目中配置参数
JDK 1.8 my batis 3 . 4 . 1 spring boot 2.0起始原因:
在编写mybatis的演示程序时,mapper传递多个参数时,需要添加@param注释来指定传递的参数名称,而springboot中集成的mybatis可以省略@param注释。于是乎,我开始探究原因。
涉及到的知识点:
Jdk8增加了-parameters参数,可以在编译后的类文件中保留参数名,而不是(arg0,arg1)。保留参数名来判断反射参数。这用于Mybatis中的mapper接口参数。
00-1010写UserMapper.java,此处省略@Param标注。
公共接口UserMapper { User getUser(字符串用户名,字符串密码);}编写测试类
公共类MyBatisTest { @ Test public void Test crud()抛出io exception { InputStream is=resources . getresourceasstream( mybatis-config . XML );SqlSessionFactory SqlSessionFactory=new SqlSessionFactory builder()。构建(is);SQL session SQL session=sqlsessionfactory . open session(true);user mapper mapper=SQL session . get mapper(user mapper . class);user admin=mapper . getuser( admin , 123456 );system . out . println(admin);} }Debug路线如下:正上方
此时参数封装的结构为:
然后就不出意外的报错了
那么如何解决呢?
00-1010向pom文件添加插件并参与参数,参数3360的含义让编译器在编译代码时保留参数的实际名称。
build plugins插件groupIdorg.apache.maven.plugins/groupId artifactIdmaven-compiler-plugin/artifactId配置编译器args args-parameters/Arg/compiler args/configuration/plugin/plugins/build添加插件和参数后,可以在idea中检查编译器的添加参数。
此时Mybatis封装参数效果如下:
那么实施结果如何呢?
没问题,但是数据库里没有匹配的数据。
那么为什么我们在springboot项目中没有配置这样的参数,但是我们也可以省略@param标注呢?
00-1010创建新的springboot项目(版本2.0.3)
此时,我看到了熟悉的关键词。为了确认是不是这个参数,这段被注释掉了。
这个想法得到了验证。
Springboot1.5.1版本1.5.1没有添加这个参数。
以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。