先给出一段代码:
上面这个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