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>裏面去就行。