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

    科技2024-08-17  30

    先给出一段代码:

    上面这个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

    Processed: 0.010, SQL: 8