1. 程式人生 > >mapper對映檔案中用到的標籤

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);
                }
            }
}

 

---------------------------------------程式碼結束---------------------------------------