在使用mybatis的时候,除了可以使用@param注解,mybatis中@param的使用
目录
@Param批注1。关于@Param2。原方法3。使用@Param@Param批注和参数1。使用@Param批注2。不使用@Param批注
@Param注解的作用说明
1.关于@Param
@Param由my batis(org . Apache . ibatis . annotations . Param)提供。作为Dao层的注释,用来传递参数,所以可以对应SQL中的字段名。一般来说,当2=参数个数=5时最好。
00-1010只有一个参数时,没什么好说的。当传入一个值时,只能匹配一个参数。当有多个参数时,传入的值无法区分。这时候可以考虑用Map,比如界面。
public ListRole findRoleByMap(MapString,Object参数);Select id= findlorebymap 参数type= map 结果type= role select id,name from t _ role其中rolename=# {rolename}和note=# {note}选择测试代码:
role mapper role mapper=SQL session . get mapper(role mapper . class);MapString,Object parameter=new HashMap();Parameter.put(roleName ,剑客);Parameter.put(注,决战紫禁之巅);ListRole roles=role mapper . findrolesbymap(参数);
00-1010显然以上的缺点在于可读性差。每次你都要读取他的密钥,才能了解它的功能,不能限制它传输的数据类型。这是使用@Param的情况,您需要将接口更改为
public ListRole findRoleByAnnotation(@ Param( roleName )String roleName,@ Param( note )String note);这样我们就可以直接传入相应的值。
当然,也可以使用Java Bean传递多个参数,定义一个POJO。
公共类RoleParam {私有字符串roleName私有字符串注释;/*getter和setter*/}此时,接口变成了
public ListRole findRoleByBean(role param role);对应的xml文件和1的区别是id和parameterType发生了变化,id和parameterType对应的方法是根据这个类的权限命名的。
而使用较多的场景可能是这样,对应多个POJO。
public ListRole findRoleByMix(@ Param( roleP )role Param role,@ Param( permission p )permission Param permission);通过这种方式,可以执行以下映射:
SELECT id= findRoleByMix result type= role SELECT id,来自t _ role的名称其中rolename=# { rolep . rolename } and note=# { rolep . note } and level=# { permission p . level } SELECT注意,此时不需要写出parameterType属性,Mybatis会自动搜索。
最后,小结一下:可能会有一个小消防办公室在问,@Param和@RequestParam是什么关系?实际上,他们彼此没有任何关系。就像Java和JavaScript,雷锋和雷锋塔,外表相似,功能不同。@Param位于Dao层,用于传递多个参数,解决可读性和直观性。而@RequestParam在控制器层,用来获取前端参数,解决前端和后端参数不一致的问题。所以他们不重要!
2.原始的方法
00-1010时,按以下方式编写SQL语句:
@ Select( Select column from table where userid=# { userid } )public int Select column(int userid);使用@Param批注声明参数时,可以使用# {}或$ {}。
@ Select( Select column from table where userid=$ { userid } )public int Select column(@ Param( userid )int userid);当不使用@Param注释声明参数时,必须使用# {}。如果使用$ {},将会出现错误。
@ Select( Select column from table where userid=$ { userid } )public int Select column(@ Param( userid )int userid);
00-1010不使用@Param注释时,只能有一个参数,而且是Javabean。SQL语句中可以引用JavaBean的属性,只能引用JavaBean的属性。
//这里id是user @ select( select * from table where ID=$ { ID } )encashmentselectuserbyid(user用户)的属性;以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。