天天看点

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

                }

            }

}

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

继续阅读