注意:這些配置在文件中的順序非常重要!必須嚴格按照上圖中出現的順序定義
- setting屬性
其中setting配置是所有配置中比較重要的,useGeneratedKeys,useColumnLable,mapUnderscoreToCamelcase是整合spring中比較常用的配置-
useGeneratedKeys
它的官方解釋是:
允許 JDBC 支持自動生成主鍵,需要驅動支持。 如果設置爲 true 則這個設置強制使用自動生成主鍵,儘管一些驅動不能支持但仍可正常工作。(比如 Derby)
它的有效值是false|true,默認值是false。useGeneratedKeys設置爲 true 時,表示如果插入的表id以自增列爲主鍵,則允許 JDBC 支持自動生成主鍵,並可將自動生成的主鍵id返回。
useGeneratedKeys參數只針對 insert 語句生效,默認爲 false; -
useColumLable
官方解釋:
使用列標籤代替列名。不同的驅動在這方面會有不同的表現,具體可參考相關驅動文檔或通過測試這兩種不同的模式來觀察所用驅動的結果。
它的有效值是false|true,默認值是true。其實意思就是使用列別名替換列名。
列別名是數據庫的知識。一個student表中有三個屬性(id,name,age),就是三個列,SELECT id AS studentId
studentId就是id列的別名。 -
mapUnderscoreToCamelcase
官方解釋:
是否開啓自動駝峯命名規則(camel case)映射,即從經典數據庫列名 A_COLUMN 到經典 Java 屬性名 aColumn 的類似映射。
有效值是true|false,默認值是false
-
參考:http://www.tianshouzhi.com/api/tutorials/mybatis/379
如果我們沒有使用mapUnderscoreToCamelcase
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">;
<mapper namespace="com.tianshouzhi.mybatis.quickstart.mapper.UserMapper">
<!--定義resultMap元素-->
<resultMap id="userMap" type="com.tianshouzhi.mybatis.resultmap.User">
<id column="id" property="id" javaType="java.lang.Integer" jdbcType="INTEGER"/>
<result column="name" property="username" javaType="java.lang.String" jdbcType="VARCHAR"/>
<result column="age" property="age" javaType="java.lang.Integer" jdbcType="INTEGER"/>
</resultMap>
<!--使用resultMap屬性代替resultType,其值爲上面<resultType>元素的id屬性值-->
<select id="testResultMap" parameterType="int" resultMap="userMap">
select id,name,age from user where id= #{id}
</select>
</mapper>
使用了mapUnderscoreToCamelcase,則可以將步驟簡化爲
<select id="selectById" parameterType="int" resultType="com.tianshouzhi.mybatis.quickstart.domain.User">
select id,name,register_time from user where id= #{id}
</select>
我們可以通過resultType直接指定實體類,不需要通過resultMap元素進行繁瑣的配置。