mybaits(2)_使用xml进行增删改查

来源:互联网 发布:哈萨克帅哥知乎 编辑:程序博客网 时间:2024/06/05 05:11

在上一篇博客的基础之上,使用mybaits进行stu表格进行增删改查。

第一步 创建接口类 StudentDao

创建dao接口,声明对stu表所需的一般性操作。

这里写图片描述

package com.test.dao;import java.util.List;import com.test.entity.Student;public interface StudentDao {    //根据id查询学生    public Student getOneStudent(int sno);    //获取所有的学生    public List<Student> getAllStudent();       //获取所有女生    public List<Student> getAllGirls();    //增加一个学生    public int addOneStudent(Student stu);    //更新学生信息    public int updateStudent(Student stu);    //删除一个学生    public int deleteStudent(Student stu);}

第二步 在测试类中增加测试用例

package com.test.service;import java.io.IOException;import java.io.Reader;import java.util.Iterator;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;import com.test.entity.Student;public class MainTest {    static Reader reader;    static SqlSessionFactory sqlSessionFactory;    static SqlSession sqlSession;    static {        try {            reader = Resources.getResourceAsReader("config/mybaits-config.xml");            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);            sqlSession = sqlSessionFactory.openSession();        } catch (IOException e) {            e.printStackTrace();        }    }    @Test    public void getOneStudent() throws IOException {        Student stu = sqlSession.selectOne("getOneStudent",4);        sqlSession.commit();//要提交会话        System.out.println(stu.toString());    }    @Test    public void getAllStudent() {        List<Student> stus = sqlSession.selectList("getAllStudent");        sqlSession.commit();//要提交会话        showList(stus);    }    @Test    public void getAllGirls() {        List<Student> stus = sqlSession.selectList("getAllGirls");        sqlSession.commit();//要提交会话        showList(stus);    }    @Test    public void addOneStudent() {        Student stu = new Student(5, "wahaha", 0, 20);        int num = sqlSession.insert("addOneStudent",stu);        sqlSession.commit();//要提交会话        isSuccess(num);    }    @Test    public void updateStudent() {        Student stu = new Student(7, "balala", 0, 20);        int num = sqlSession.update("updateStudent",stu);        sqlSession.commit();//要提交会话        isSuccess(num);    }    @Test    public void deleteStudent() {        Student stu = new Student(7, "balala", 0, 20);        int num = sqlSession.delete("deleteStudent",stu);        sqlSession.commit();//要提交会话        isSuccess(num);    }    //展示查询结果    public void showList(List<Student> stus) {        if(stus.size() < 1) {            System.out.println("没有查询到数据");        }else {            Iterator<Student> iterator = stus.iterator();            while(iterator.hasNext()) {                System.out.println(iterator.next().toString());            }        }    }    //命令是否执行成功    public void isSuccess(int flag) {        if(flag >= 1) {            System.out.println("命令执行成功,影响行数为:" + flag);        }else {            System.out.println("命令执行失败");        }    }}
<?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="stuMapper">        <!-- id 为调用标识,resultType是返回值类型 -->        <select id="queryTest" resultType="com.test.entity.Student">            SELECT * FROM stu WHERE sno = #{sno}; <!--#{sno} 表示输入的参数-->        </select>        <select id="getOneStudent" resultType="com.test.entity.Student">            SELECT * FROM stu WHERE sno = #{sno};         </select>        <select id="getAllStudent"  resultType="com.test.entity.Student">            SELECT * FROM stu;        </select>        <select id="getAllGirls" resultType="com.test.entity.Student">            SELECT * FROM stu WHERE sex = 0;        </select>        <!-- parameterType 指的是参数类型 -->        <insert id="addOneStudent" parameterType="com.test.entity.Student">            INSERT INTO stu(name,age,sex) VALUES(#{name},#{age},#{sex});        </insert>        <update id="updateStudent" parameterType="com.test.entity.Student">            UPDATE stu SET name = #{name},age = #{age},sex = #{sex}            WHERE sno = #{sno}        </update>        <delete id="deleteStudent" parameterType="com.test.entity.Student">            DELETE FROM stu WHERE sno = #{sno};        </delete></mapper>

经过测试,所有增删改查都是可以完成的。