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);
}
}
}
---------------------------------------代码结束---------------------------------------