当前位置: 代码迷 >> 综合 >> #MyBatis:typeAliases、typeAlias、package #MyBatis配置文件的命名规范 @FDDLC
  详细解决方案

#MyBatis:typeAliases、typeAlias、package #MyBatis配置文件的命名规范 @FDDLC

热度:76   发布时间:2024-02-26 09:14:14.0

先给出一段代码:

 
 

上面这个resultType的值很长对吧,能不能省略包名,写成

resultType="Account"

这样简短的形式呢?

当然可以,不过得先干一件事,那就是给 cn.liuxingchang.domain.Account 取个别名!

取别名的方法有两种:

一种是挨个取:

<typeAliases><typeAlias type="cn.liuxingchang.domain.Account" alias="Account" /><typeAlias type="cn.liuxingchang.domain.User" alias="User" /><typeAlias type="cn.liuxingchang.domain.Order" alias="Order" />
</typeAliases>

一种是批量取:

<typeAliases><package name="cn.liuxingchang.domain"/>
</typeAliases>

挨个取很好理解,type="cn.liuxingchang.domain.Account"表示原名为cn.liuxingchang.domain.Account,alias="Account"表示别名为Account。当然,这个别名是随便取的,叫Account、MyAccount或者其他别名都行。

批量取就有点迷茫了,原名是啥?别名又是啥?

批量取不是配置了一个package标签吗?这个标签用来指定一个包,这个包下的所有类都会被取别名,原名就是类的全路径名(比如cn.liuxingchang.domain.Account),别名是!!!

类名。

比如批量取的时候,如果cn.liuxingchang.domain下有个Account类,它的别名就是Account哦!批量取的时候别名可以自定义吗?抱歉,批量取时别名不能自定义!

最后再补充一点,别名不区分大小写!别名不区分大小写!别名不区分大小写!

比如别名是Account,那么你在使用时(比如开篇的resultType),写account也行,ACCOUNT、accounT都行!

 

再请大家看两段代码:

xml:

<select id="selectNameById" parameterType="inT" resultType="STRING">select name from account where id = #{uid}
</select>

Java:

String selectNameById(Integer id);

根据上面的代码,总结如下:

1、当parameterType或者resultType为基本类型、基本类型的包装类或String类型时,和别名一样,不区分大小写。

2、select name from account where id = #{uid} 这里唯一的参数是int类型的uid,String selectNameById(Integer id) 这里唯一的参数是Integer类型的id,一个叫id,一个叫uid,名字不一样!说明啥?说明参数只有一个且为简单类型时,两边的参数名不要求相同,但类型必须兼容哦!

 

上面批量取别名的时候,引出了一个package标签。这个package标签还可以用在别处:#MyBatis中SQL配置文件的命名规范 #package标签 #FDDLC

  相关解决方案