天天看點

mybatis相關:别名的配置(typeAliases)與駝峰映射(mapUnderscoreToCamelCase)

1.自定義别名的兩種設定

在mybatis中使用parameterType或者resultType必須寫全限定名。但我們可以使用系統别名或自定義别名的方式來簡化書寫

在mybatis配置檔案中

<typeAliases>
            <!--方式1:聲明單個别名 使用時忽略大小寫-->
           <!-- <typeAlias type="com.wgz.entity.MiddleStudent" alias="middleStudent"></typeAlias>-->
            <!--方式2:掃描包聲明别名
                       為包下的所有實體類建立别名,即類名,且不區分大小寫
                       如:student ,StuDent
             -->
            <package name="com.wgz.entity"/>
    </typeAliases>
           

使用

<select id="findStudentListByName" parameterType="string" resultType="Student">
            select  * from  student_tb where  name like '%${value}%'
        </select>
           
  • 當sql 語句需要參數 時,可以指定對應參數類型 parameter(也可以不寫,無影響),
  • 當sql語句是查詢時需要指定resultType
  • 增删改傳回的的時影響到的行數不需要指定

2.系統别名

在mybatis中TypeAliasRegistry已經為我們配置的預設别名

registerAlias("string", String.class);

    registerAlias("byte", Byte.class);
    registerAlias("long", Long.class);
    registerAlias("short", Short.class);
    registerAlias("int", Integer.class);
    registerAlias("integer", Integer.class);
    registerAlias("double", Double.class);
    registerAlias("float", Float.class);
    registerAlias("boolean", Boolean.class);

    registerAlias("byte[]", Byte[].class);
    registerAlias("long[]", Long[].class);
    registerAlias("short[]", Short[].class);
    registerAlias("int[]", Integer[].class);
    registerAlias("integer[]", Integer[].class);
    registerAlias("double[]", Double[].class);
    registerAlias("float[]", Float[].class);
    registerAlias("boolean[]", Boolean[].class);

    registerAlias("_byte", byte.class);
    registerAlias("_long", long.class);
    registerAlias("_short", short.class);
    registerAlias("_int", int.class);
    registerAlias("_integer", int.class);
    registerAlias("_double", double.class);
    registerAlias("_float", float.class);
    registerAlias("_boolean", boolean.class);

    registerAlias("_byte[]", byte[].class);
    registerAlias("_long[]", long[].class);
    registerAlias("_short[]", short[].class);
    registerAlias("_int[]", int[].class);
    registerAlias("_integer[]", int[].class);
    registerAlias("_double[]", double[].class);
    registerAlias("_float[]", float[].class);
    registerAlias("_boolean[]", boolean[].class);

    registerAlias("date", Date.class);
    registerAlias("decimal", BigDecimal.class);
    registerAlias("bigdecimal", BigDecimal.class);
    registerAlias("biginteger", BigInteger.class);
    registerAlias("object", Object.class);

    registerAlias("date[]", Date[].class);
    registerAlias("decimal[]", BigDecimal[].class);
    registerAlias("bigdecimal[]", BigDecimal[].class);
    registerAlias("biginteger[]", BigInteger[].class);
    registerAlias("object[]", Object[].class);

    registerAlias("map", Map.class);
    registerAlias("hashmap", HashMap.class);
    registerAlias("list", List.class);
    registerAlias("arraylist", ArrayList.class);
    registerAlias("collection", Collection.class);
    registerAlias("iterator", Iterator.class);

    registerAlias("ResultSet", ResultSet.class);
           

3.開啟駝峰映射

駝峰映射,就是将滿足sql下劃線的标準寫法字段自動轉換為滿足java命名規則的實體屬性,不需要用resultMap自己建立映射關系。

如user資料表字段 : u_id , u_name,u_sex;

會自動轉換為User類屬性比對的字段:uId,uName,uSex;

<!--
    開啟駝峰寫法   自動将資料庫表字段 s_address 映射為Java屬性 sAddress
     <setting name="mapUnderscoreToCamelCase" value="true"/>
    -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
           

3.mybatis配置檔案内容和順序,必須為以下順序,否則會出現錯誤

<configuration><!--配置-->
	<properties/><!--屬性-->
	<settings/><!--設定-->
	<typeAliases/><!--類型别名--> 
	<typeHandlers/><!--類型處理器--> 
	<objectFactory/><!--對象工廠-->  
	<plugins/><!--插件--> 
	<environments><!--配置環境--> 
		<environment><!--環境變量--> 
		<transactionManager/><!--事務管理器--> 
			<dataSource/><!--資料源--> 
		</environment>
	</environments>
	<databaseidProvider/><!--資料庫廠商辨別-->  
	<mappers/><!--映射器--> 
</configuration>