- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > 編程語(yǔ)言 >
- mybatis有哪些常用方法
這篇文章主要講解了“mybatis有哪些常用方法”,文中的講解內容簡(jiǎn)單清晰,易于學(xué)習與理解,下面請大家跟著(zhù)小編的思路慢慢深入,一起來(lái)研究和學(xué)習“mybatis有哪些常用方法”吧!
java 接口:
Integer insertList(List<Student> list);
xml:
<insert id="insertList" parameterType="List"> insert into student ( ID, NAME, BIRTH, SEX ) values <foreach collection="list" item="item" index="index" open="(" close=")" separator="),("> #{item.id}, #{item.name}, #{item.birth}, #{item.sex} </foreach> </insert>
其中使用foreach
對list這個(gè)列表進(jìn)行循環(huán),循環(huán)中每個(gè)對象表示名稱(chēng)為item, 開(kāi)始為(
結束為)
,中間分割符為),(
。
where限制為in的均可適用。
java:
List<Student> getStudentListByNames(@Param("names") List<String> names);
xml:
<select id="getStudentListByNames" resultType="com.demo.domain.Student"> select * from student a <where> <if test="names != null and names > 0"> a.NAME in <foreach collection="names" item="item" index="index" open="(" close=")" separator=","> #{item} </foreach> </if> </where> </select>
我們先用test
判斷names是否為空并且要有數量,然后進(jìn)行遍歷,其實(shí)本質(zhì)就是進(jìn)行腳本拼接,和我們平時(shí)寫(xiě)法很相似。
比如:
"張三,李四,王五"
java:
List<Student> getStudentsByNames(@Param("names") String names);
xml:
<select id="getStudentsByNames" resultType="com.demo.domain.Student"> select * from student a <where> <if test="names != null and names != ''"> a.NAME in <foreach item="item" index="index" collection="names.split(',')" open="(" separator="," close=")"> #{item} </foreach> </if> </where> </select>
和之前的例子差不多,但是判斷條件改了,因為不是列表了,還有就是collection
中使用split
進(jìn)行分割,其它基本相同。
如需要重復使用的sql:
<sql id="Base_Column_List"> ID, NAME, BIRTH, SEX </sql>
復用:
select <include refid="Base_Column_List"/> from student where id=#{id}
include
中的refid
填充值就是上面sql
中id
的屬性值。
如需要別名的sql:
<sql id="Alias_Column_List"> ${alias}.ID, ${alias}.NAME, ${alias}.BIRTH, ${alias}.SEX </sql>
使用t1別名:
select <include refid="Alias_Column_List"> <property name="alias" value="t1"></property> </include> from student t1 where t1.id=#{id}
如查找學(xué)生名字中帶有某某字樣的學(xué)生:
select <include refid="Base_Column_List"/> from student where name like "%"#{name}"%"
如學(xué)生student有屬性:id, name, class_id . 班級class有屬性:id, class_name, class_teacher_id . 老師teacher(這里我們假設只有班主任,一個(gè)班級只有一個(gè)班主任)有屬性: id, teacher_name .
查詢(xún)班級以及和班級關(guān)聯(lián)的學(xué)生和班主任。
<select id="selectClassDescInfos" resultMap="classDescInfos"> select t1.id as class_id, t1.class_name, t2.id as teacher_id, t2.teacher_name, t3.id as student_id, t3.name as student_name from class t1 left join teacher t2 on t1.class_teacher_id = t2.id left join student t3 on t1.id = t3.class_id where class_id = #{classId} </select>
<resultMap id="classDescInfos" type="com.demo.vo.ClassDescInfos"> <id column="class_id" property="classId"></id> <result column="class_name" property="className"/> <association property="teacher" javaType="com.demo.vo.Teacher"> <id column="teacher_id" property="teacherId"></id> <result column="teacher_name" property="teacherName"/> </association> <collection property="students" javaType="ArrayList" ofType="com.demo.vo.Student"> <id column="student_id" property="studentId"></id> <result column="student_name" property="studentName"/> </collection>
其中com.demo.vo.ClassDescInfos
的java類(lèi)結構類(lèi)似如下:
private String classId; private String className; private Teacher teacher; private List<Student> students;
這樣上述查詢(xún)就可以返回一個(gè)這樣的對象,都幫我們處理好了。
具體可以參考這篇文章:
https://www.cnblogs.com/rollenholt/p/3365866.html
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站