myBatis詳細介紹和注意的地方

1、自增主鍵的問題java

    自增主鍵有兩中方式,一種是uuid,另一種是自增加。sql

    自增主鍵生成Uuid主鍵生成時機區別:數據庫

    自增主鍵在insert語句執行後生成的。Uuid主鍵在insert語句執行前生成的。數組

<!-- 
	keyProperty:將主鍵設置到pojo中哪一個屬性中
	order:selectKey中sql執行的時機
	resultType:selectKey中sql執行的結果類型
	LAST_INSERT_ID:是insert後獲取自增主鍵值 
	 -->
	<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
	     select LAST_INSERT_ID()
	</selectKey>
	insert into test(testname)
	 values(#{testname})
	</insert>

2、SqlMapConfig.xml配置文件內容mybatis

做爲mybatis的全局配置文件,配置內容包括:數據庫環境、mapper定義、全局參數設置。app

properties(屬性)ui

settings(全局配置參數)spa

typeAliases(類型別名)插件

typeHandlers(類型處理器)code

objectFactory(對象工廠)

plugins(插件)

environments(環境集合屬性對象)

environment(環境子屬性對象)

transactionManager(事務管理)

dataSource(數據源)

mappers(映射器)

主要講下類型別名的問題。

<typeAliases>
	    <!-- 單個別名定義
		type:pojo的路徑 
		alias:別名的名稱
		-->
		<!-- <typeAlias type="com.test.User" alias="user"/> -->
		<!-- 批量別名定義
		name:指定包名,將包下邊的全部pojo定義別名 ,別名爲類名(首字母大寫或小寫都行)
		 -->
		<package name="com.test"/>
	</typeAliases>

3、包裝對象使用

        開發中使用pojo傳遞查詢條件,查詢條件是綜合的查詢條件,不只包括用戶查詢條件還包括其它的查詢條件(是另外一個pojo),使用包裝對象傳遞輸入參數。定義包裝對象將查詢條件(pojo)以類組合的方式包裝起來。parameterType使用包裝對象。

4、一對一和一對多關係

    1.一對一pojo對象上的體現

    

public class test{
   priavte String testName;
   private String createTiem;
   
   private User user;/用戶對象

}

    2.xml的體現

<resultMap type="test" id="testId">
		<!-- id:訂單信息的惟 一約束 若是由多個字段決定一條惟 一記錄,id標籤須要定義多個 -->
		
		<result column="testName" property="testName" />
		<result column="createName" property="createName" />

		<!-- 配置用戶映射信息 將sql查詢的用戶信息映射到orders中的user屬性中 association:用於單個關聯對象的映射 property:將關聯信息映射到orders的哪一個屬性 
			javaType:映射屬性的類型 -->
		<association property="user" javaType="com.pojo.User">
			<!-- id:關聯的用戶信息的惟 一約束 property:id指定 的列映射到關聯User類的哪一個屬性 -->
			...字段
		</association>


	</resultMap>

    一對多的pojo體現

public class test{
   priavte String testName;
   private String createTiem;
   
   private List<User> user;/用戶對象

}

xml體現:

使用的是collection關鍵字

5、sql片斷

可使用<where>,寫出sql片斷。

<sql id="query_user_where">
	 
	     <!-- 這裏調用getUser方法獲 取user的值 -->
			<if test="user!=null">
				<!-- 這裏調用user的getUsername方法獲取username的值 -->
				<if test="user.username!=null and user.username!=''">
					and user.username = #{user.username}
				</if>
				<if test="user.sex!=null and user.sex!=''">
					and user.sex = #{user.sex}
				</if>		
				
			</if>
</sql>

6、通常是使用resultType

7、批量操做

使用sql語句:

collection:集合,ids數組
        item:遍歷的每一個對象
        open:開始遍歷時拼接的sql
        separator:遍歷的間隔符號
        close:結束 遍歷時拼接的sql
       
        <foreach collection="ids" item="id" open="AND ("
            separator="OR" close=")">
            id =#{id} 
        </foreach>

注意的是參數爲 private  int[] ids.而後把這個語句添加到<where>裏面去就行。

相關文章
相關標籤/搜索