一.mapper映射文件
<?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.mybatis.mapper.TableNameMapper"> <!-- 插入數據並返回自增ID 有自增ID功能數據庫可以采用useGeneratedKeys="true"開啟判斷是否是自增ID keyProperty="id" 指定插入數據后自增ID返回時賦值給實體類的那個屬性(這里是id屬性) --> <insert id="insertData" parameterType="java.util.HashMap" useGeneratedKeys="true" keyProperty="id"> insert into tableName values(null,#{name}) </insert> <!-- 非自增主鍵 像Oracle數據庫采用序列來作為自增主鍵,通過 selectKey子來獲取主鍵值 MySQL同樣適用(只是order屬性處為after, 因為mysql自增完ID后才返回ID值) --> <insert id="insertDataAgain"> <!-- selectKey中resultType屬性指定期望主鍵的返回的數據類型, keyProperty屬性指定實體類對象接收該主鍵的字段名 order屬性指定執行查詢主鍵值SQL語句是在插入語句執行之前還是之后(可取值:after和before) --> <!-- oracle --> <selectKey resultType="integer" keyProperty="id" order="BEFORE"> SELECT LAST_INSERT_ID() </selectKey> <!-- <selectKey resultType="integer" keyProperty="id" order="AFTER"> SELECT id from tableName order by id desc limit 1 </selectKey> --> insert into tableName values(null,#{name}) </insert> </mapper>
注: ORACLE返回主鍵最好是在插入SQL執行之前執行,也就是order屬性值設置為before
二.mapper接口
public interface TableNameMapper { //插入數據 public Integer insertData(Map<String, Object> map); //插入數據 public Integer insertDataAgain(Map<String, Object> map); }
三.如何取到ID
當數據添加成功之后,你打印接口中傳入的map,會發現里面多了一個id屬性,且值和數據庫自增的id是一模一樣的,這就是ID返回的實現