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

 

---------------------------------------代码结束---------------------------------------

猜你喜欢

转载自blog.csdn.net/qq_41857764/article/details/85626329
今日推荐