返回主鍵
1.XML方式
<insert id="bb" parameterType="XX.XX.XXEntity包" useGeneratedKeys="true" keyProperty="id">這里是insert語句
</insert>
2.注解方式,要在接口方法上加兩個注解,一個是insert,一個是selectKey
@Insert("這里是insert語句")
@SelectKey(statement = "SELECT last_insert_id() as id", keyProperty = "id", before = false, resultType = String.class, statementType = StatementType.STATEMENT)
//entity里要有id這個屬性并且有getset方法,上面的resultType要注意,你的entity里的id是什么屬性,就寫什么,我的id是String,所以我寫String.class,如果你的是int,那么請寫Integer.class
public int insert(實體類 entity);
循環
本文展示了這樣一個業務:根據多個ID刪除多條數據
public Integer 方法名AA(@Param("bb") String[] ids);
1.Mybatis接口方式,接口方式的循環通常很好些,因為@param可以指定名字
<delete id="方法名AA" resultMap="如果是查詢記得寫返回值類型">delete from 表 where id in//如果是批量插入記得刪掉open和close屬性<foreach collection="bb" item="item" index="index" open="("separator="," close=")">#{item}</foreach>
</delete>
2.Mybatis映射方式,如果使用映射方式,bb如果不放到map中,那么mybatis會把他的名字變成list,所以如下寫,不再用item屬性了
<delete id="方法名AA" resultMap="如果是查詢記得寫返回值類型">delete from 表 where id in//如果是批量插入記得刪掉open和close屬性<foreach collection="list" index="index" item="aaa" open="("separator="," close=")">#{list[${index}]}</foreach>
</delete>
注: 當mybatis以映射方式循環的時候,你們會發現循環語句中有個item=“aaa”,雖然我下面沒有用到這個,但是item必須寫,哪怕是item=“bbb”,item=“ccc”,必須要寫,否則mybatis報錯
加前綴后綴覆蓋
下面的例子展示了如果傳遞用戶名稱,則將用戶名稱userName和年齡userAge作為條件進行或查詢,但是由于前面有一個邏輯刪除表示is_deleted = 0
,這導致如果不進行特殊處理,后面name+age無法在一個括號里,但是如果在一個括號里(所以使用prefix+suffix
),并且name前面的OR要消失,所以使用prefixOverrides
select * from 表
where
is_deleted = 0
<trim prefix="(" suffix=")" prefixOverrides="OR"><if test="userName=null and userName!=''">OR t1.`name` = #{userName}</if><if test="userAge=null and userAge!=''">OR t1.`age` = #{userAge}</if>
</trim>
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态