1. 程式人生 > >MyBatis學習二:mapper.xml屬性

MyBatis學習二:mapper.xml屬性

XXMapper.xml檔案
1、id:標識對映檔案中的sql;

將sql語句封裝到mapped statement物件中,所以將id稱為statement的id。

2、parameterType:指定輸入引數型別
3、parameterMap:同parameterType,舊版本
4、resultType:指定sql輸出結果所對映的java物件型別;

select指定resultType,表示將單條記錄對映成的java物件。使用resultType進行輸出對映,只有查詢出來的列名和pojo中的屬性名一致,該列才可對映成功。

5、resultMap:用於高階輸出結果對映。

使用方法:定義resultMap,使用resultMap作為statement的輸出對映型別。

<resultMap type=”user” id=”userResultMap”>
	<!—id表示查詢結果集中唯一標識
column:查詢出來的列名
property:type指定的pojo型別中的屬性名
最終resultMap對column和property作一個對映關係(對應關係) -->
<id column=”id_” property=”id”/>
<!—result:對普通名對映定義  最終resultMap對column和property作一個對映關係(對應關係) -->
<result column=”username_” property=”username”/>
</resultMap>

<select id=”findUserByResultMap” parameterType=”int” resultMap=”userResultMap”>
	SELECT id id_, username username_ FROM USER WHERE id=#{value}
</select>
6、#{}表示一個佔位符

#{id}其中的id表示接受輸入的引數,引數名稱是id;如果輸出引數是簡單型別,#{}中的引數名可以任意,可以是value或其他名稱。

如果接受pojo物件值,通過OGNL讀取物件中的屬性值,通過屬性.屬性.屬性的方法獲取物件屬性值。

<select  id=”findUserById”  parameterType=”int”  resultType=”cn.itcast.mybatis.po.User”>
	SELECT * FROM USER WHERE id = #{id}
</select>

<sql id="Base_Column_List" >
    ID, DEPT_NAME, DEPT_NO, FID, WEIGHT, CREATE_DATE
  </sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" 
parameterType="java.lang.String" >
    select 
    <include refid="Base_Column_List" />
    from SYS_MAN_DEPARTMENT
    where ID = #{id,jdbcType=VARCHAR}
  </select>
7、${}表示一個拼接符

將接受到的內容不加任何修飾拼接在sql中;但是會引起sql注入,不建議使用

${value}接受輸入引數的內容,如果傳入型別是簡單型別,${}中只能使用value;如果接受pojo物件值,通過OGNL讀取讀取物件中的屬性值,通過屬性.屬性.屬性的方法獲取物件屬性值。

模糊查詢:

<select  id=”findUserByName”  parameterType=”java.lang.String”
  resultType=”cn.itcast.mybatis.po.User”>
	SELECT * FROM USER WHERE username LIKE ‘%${value}%’
</select>
8、關於主鍵

A)自增主鍵:主鍵id如果是自增的,則不設定,即使設定了也沒效果。

通過mysql函式獲取到剛插入記錄的自增主鍵:LAST_INSERT_ID(),是insert之後呼叫此函式。

B)非自增主鍵:使用mysql的uuid()函式生成主鍵,需要修改表中id欄位型別為String,長度設定為35位。執行思路:先通過uuid()查詢到主鍵,將主鍵插入到sql語句中。

C)通過oracle的序列生成主鍵:

根據id更新使用者:

<update  id=”updateUser”  parameterType=”cn.itcast.po.user”>
	update user set username=#{username}, birthday=#{ birthday }, address=#{address} where id=#{id}
</update>