@MapperpublicinterfaceEmpMapper{// 方法 1: エイリアス@Select("select id, username, password, name, gender, image, job, entrydate, dept_id deptId, create_time createTime, update_time updateTime"+" from mybatis.emp where id = #{id}")publicEmpidSelect(Integerid);}
@Results アノテーションの使用
1
2
3
4
5
6
7
8
9
10
11
@MapperpublicinterfaceEmpMapper{// 方法 2: @Results @Result アノテーション@Results({@Result(column="dept_id",property="deptId"),@Result(column="create_time",property="createTime"),@Result(column="update_time",property="updateTime")})@Select("select * from mybatis.emp where id = #{id}")publicEmpidSelect(Integerid);}
@MapperpublicinterfaceEmpMapper{// 条件による検索// '%${name}%' のように名前に使用される ${} は、'' 内でも使用できることに注意してください。@Select("select * from mybatis.emp where name like '%${name}%' and gender = #{gender} and "+"entrydate between #{begin} and #{end} order by update_time desc")publicList<Emp>conditionSelect(Stringname,shortgender,LocalDatebegin,LocalDateend);}
文字列の連結には補間が使用されるため、この方法は安全ではありません。
1
2
3
4
5
6
7
@MapperpublicinterfaceEmpMapper{// より安全な条件付きクエリ@Select("select * from mybatis.emp where name like concat('%',#{name},'%') and gender = #{gender} and "+"entrydate between #{begin} and #{end} order by update_time desc")publicList<Emp>conditionSelect(Stringname,shortgender,LocalDatebegin,LocalDateend);}
@MapperpublicinterfaceEmpMapper{// より安全な条件付きクエリ@Select("select * from mybatis.emp where name like concat('%',#{name},'%') and gender = #{gender} and "+"entrydate between #{begin} and #{end} order by update_time desc")publicList<Emp>conditionSelect(Stringname,shortgender,LocalDatebegin,LocalDateend);}// 上記のコードは1.xでは動作しません。またMyBatisのみを使用する場合も動作しません。関数に注釈を付ける必要がある。publicList<Emp>conditionSelect(@Param("name")Stringname,@Param("gender")shortgender,@Param("begin")LocalDatebegin,@Param("end")LocalDateend);
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 上記のヘッダーファイルを見つけるには、公式ウェブサイトにアクセスしてください。 --><!-- namespace 属性はインターフェースである --><mappernamespace="net.yexca.mapper.EmpMapper"><!-- id属性はメソッド名です --><!-- resultTypeは単一のレコードでカプセル化された型です --><selectid="conditionSelect"resultType="net.yexca.pojo.Emp"> select * from mybatis.emp where name like concat('%',#{name},'%') and gender = #{gender} and
entrydate between #{begin} and #{end} order by update_time desc
</select></mapper>
<iftest="name!=null"> name like contact('%',#{name},'%')
</if>
where タグは、where キーワードを生成するかどうか、および and キーワードと or キーワードを自動的に削除するかどうかを管理します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<selectid="conditionSelect"resultType="net.yexca.pojo.Emp"> select * from mybatis.emp
<where><iftest="name!=null"> name like concat('%',#{name},'%')
</if><iftest="gender!=null"> and gender = #{gender}
</if><iftest="begin!=null and end!=null"> and entrydate between #{begin} and #{end}
</if></where> order by update_time desc
</select>
set
SQL の set キーワードを置き換え、UPDATE ステートメントで使用する余分なカンマを自動的に削除します。
<deleteid="deleteByIds"> delete from mybatis.emp where id in
<foreachcollection="ids"item="id"separator=","open="("close=")"> #{id}
</foreach></delete>