mapper對映檔案中用到的標籤
mapper對映檔案中標籤的使用基本都出現在mapper對映檔案中和測試使用的時候,這裡先給大家展示標籤的總結,接著是兩個檔案的程式碼
幾個標籤的總結:
if: <if test="條件">符合條件會做的事</if>
where: <where><if test="條件">符合條件會做的事</if></where>
where標籤會自動補充where並且自動去掉第一個and
trim: <trim prefix="要改為的字首" prefixOverrides="要被改的字首"
suffix="要改為的字尾" suffixOverrides="要被改的字尾"></trim>
set: <set><if test="條件">符合條件會做的事</if></set>
set標籤會自動新增set並且自動去掉最後一個逗號
choose: 類似於if(){}if(){}else,else{}
<choose>
<when test="條件">
符合條件就會執行,然後就不會執行後面的了
</when>
<when test="">
</when>
<otherwise>
</otherwise>
</choose>
foreach: <foreach collection="" item="" open="" separator=""></foreach>
collection中的內容根據引數不同來寫,陣列用array,集合用list,別名的話就用別名;item是臨時 的物件變數
TeacherMapper.xml:
---------------------------------------程式碼開始---------------------------------------
<?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.dao.TeacherDAO">
<select id="getTeaArray" resultType="teacher">
select * from teacher
<!-- collection中的內容根據引數不同來寫,陣列用array,集合用list,別名的話就用別名;item是臨時的物件變數 -->
<foreach collection="array" item="elm" open="where" separator="or">
teaName=#{elm.teaName}
</foreach>
</select>
<select id="getTeaById" resultType="teacher">
select * from teacher
<!-- choose中的when,otherwise相當於if ... else和else -->
<choose>
<when test="teaId!=0">
where teaId=#{teaId}
</when>
<when test="teaName!=null">
where teaName=#{teaName}
</when>
<otherwise>
</otherwise>
</choose>
</select>
<update id="update">
<!-- 不要重複了set -->
update teacher
<!-- set標籤會自動新增set並且自動去掉最後一個, -->
<set>
<if test="teaName!=null">
teaName=#{teaName},
</if>
<if test="teaAge!=0">
teaAge=#{teaAge},
</if>
</set>
where teaId=#{teaId}
<!-- 把第一個字尾,覆蓋成為空,因為沒有說明suffix的值,所以預設是空字元覆蓋 -->
<!--
<trim suffixOverrides=",">
<if test="teaName!=null">
teaName=#{teaName},
</if>
<if test="teaAge!=0">
teaAge=#{teaAge},
</if>
</trim>
where teaId=#{teaId}
-->
<choose>
<when test="">
</when>
</choose>
</update>
<select id="getTeaByMore" resultType="teacher">
<!-- 沒使用where標籤的時候可以使用 where 1=1 -->
<!-- 不要重複了where -->
select * from teacher
<!--
prefix是字首的意思, prefixOverrides是字首覆蓋的意思,
意思是把整個trim標籤中第一個prefixOverrides裡的值換成prefix裡的值
-->
<trim prefix="where" prefixOverrides="and">
<if test="teaId!=0">
and teaId=#{teaId}
</if>
<if test="teaName!=null">
and teaName=#{teaName}
</if>
<if test="teaAge!=0">
and teaAge=#{teaAge}
</if>
</trim>
<!-- 因為變數teaId是integer型別的所以這裡是不等於0 -->
<!-- where標籤會自動補充where並且自動去掉第一個and -->
<!--
<where>
<if test="teaId!=0">
and teaId=#{teaId}
</if>
<if test="teaName!=null">
and teaName=#{teaName}
</if>
<if test="teaAge!=0">
and teaAge=#{teaAge}
</if>
</where>
-->
<!--
標籤:
if: <if test="條件">符合條件會做的事</if>
where: <where><if test="條件">符合條件會做的事</if></where>
where標籤會自動補充where並且自動去掉第一個and
trim: <trim prefix="要改為的字首" prefixOverrides="要被改的字首"
suffix="要改為的字尾" suffixOverrides="要被改的字尾"></trim>
set: <set><if test="條件">符合條件會做的事</if></set>
set標籤會自動新增set並且自動去掉最後一個逗號
choose: 類似於if(){}if(){}else,else{}
<choose>
<when test="條件">
符合條件就會執行,然後就不會執行後面的了
</when>
<when test="">
</when>
<otherwise>
</otherwise>
</choose>
foreach: <foreach collection="" item="" open="" separator=""></foreach>
collection中的內容根據引數不同來寫,陣列用array,集合用list,別名的話就用別名;item是臨時的物件變數
-->
</select>
</mapper>
---------------------------------------程式碼結束---------------------------------------
test.java
---------------------------------------程式碼開始---------------------------------------
package com.test;
import java.util.List;
import org.junit.Test;
import com.dao.TeacherDAO;
import com.dao.impl.TeacherDAOImpl;
import com.entity.Teacher;
public class TeacherDAOTest {
@Test
public void getTeaByMoreTest(){
TeacherDAO dao=new TeacherDAOImpl();
//物件tea一定要實現,否則不能使用
Teacher tea=new Teacher();
//字串就是字串,不能寫成單引號字元
tea.setTeaName("張四");
List<Teacher> teaList=dao.getTeaByMore(tea);
for(Teacher t:teaList){
System.out.println(t);
}
}
//測試方法不要有返回值,否則報錯,而又沒有錯誤資訊
@Test
public void updateTest(){
TeacherDAO dao=new TeacherDAOImpl();
Teacher tea=new Teacher();
//別忘了選擇學號
tea.setTeaId(1);
tea.setTeaAge(100);
int count=dao.update(tea);
System.out.println(count);
}
@Test
public void getTeaByIdTest(){
TeacherDAO dao=new TeacherDAOImpl();
Teacher tea=new Teacher();
tea.setTeaName("李四");
//別忘了選擇學號
List<Teacher> teaList=dao.getTeaById(tea);
for(Teacher t:teaList){
System.out.println(t);
}
}
@Test
public void getTeaArrayTest(){
TeacherDAO dao=new TeacherDAOImpl();
Teacher[] tea=new Teacher[2];
//物件陣列要對每一個數組元素進行再次初始化,否則會空指標錯誤
tea[0]=new Teacher();
tea[1]=new Teacher();
tea[0].setTeaName("張四");
tea[1].setTeaName("李四");
List<Teacher> teaList=dao.getTeaArray(tea);
for(Teacher t:teaList){
System.out.println(t);
}
}
}
---------------------------------------程式碼結束---------------------------------------