mybatis入门(二)之CRUD操作

一、增加学生

​ 在上一篇文章,已经介绍了如何简单的搭建maybatis环境以及一个简单的入门案例,本文也是基于上一篇内容进行扩展,之前内容掌握的话,相信接下来的操作一定不会难倒你。如果需要查阅,以下是文章链接:
https://blog.csdn.net/stevensam_lin/article/details/82048519

​ 好了,现在就开始给大家讲解一下,如何增加学生信息。

  1. 在IStudentDao接口中新增一个增加学生的方法

    /**
        * 插入学生
        * @param student
        */
       void addStudent(Student student);
  2. 修改映射配置文件,增加一个增加学生的insert标签

    <!--配置插入学生的方法-->
       <insert id="addStudent" parameterType="com.stevensam.domain.Student">
           <selectKey resultType="int" keyProperty="sid" order="AFTER" keyColumn="sid">
               SELECT last_insert_id();
           </selectKey>
           INSERT into student(sname, sex, birthday, cno) VALUES(#{sname},#{sex},#{birthday},#{cno})
       </insert>

    在insert标签中,id还是为执行的方法名,参数方法为全限定类名,内容为一个selectKey和一条插入的SQL语句组成;在SQL语句中,传入的参数,如#{sname}是从student类中getSname方法得到的,所以参数名和类中的成员变量要保持一致,否则会出错。

    在selectKey标签中,返回值类型设为int,返回值为sid,返回的数据库中的列名也为sid,顺序为after,意为在sql语句提交之后执行返回。

  3. 在MybatisTest测试类中增加一个测试增加学生方法

    //先定义三个成员变量
    private InputStream in;
    private SqlSession session;
    private IStudentDao mapper;
    
    @Before//在测试方法之前执行
       public void init() throws Exception {
           //1.读取配置文件
           in = Resources.getResourceAsStream("SqlMapConfig.xml");
           //2.创建SqlSessionFactory工厂
           SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
           SqlSessionFactory factory = builder.build(in);
           //3.工厂生产SqlSession对象
           session = factory.openSession();
           //4.使用SqlSession创建Dao接口的代理对象
           mapper = session.getMapper(IStudentDao.class);
       }
    /**
        * 查询所有学生
        */
       @Test
       public void testFindAll() {
           //5.使用代理对象执行方法
           List<Student> studentList = mapper.findAll();
           for (Student stu : studentList) {
               System.out.println(stu);
           }
       }
    /**
        * 新增学生
        */
       @Test
       public void testAddStudent() {
           Student student = new Student();
           student.setSname("曹植");
           student.setSex("男");
           try {
               student.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("1999-02-03"));
           } catch (ParseException e) {
               e.printStackTrace();
           }
           student.setCno(2);
           System.out.println(student);
           //5.使用代理对象执行方法
           mapper.addStudent(student);
           session.commit();
           System.out.println(student);
       }
    @After//在测试方法之后执行
       public void destroy() throws Exception {
           //6.释放资源
           in.close();
           session.close();
       }

    执行测试方法,结果如下:

    这里写图片描述
    这里写图片描述

二、修改学生

  1. 在IStudentDao接口中新增一个修改学生的方法

    /**
        * 修改学生信息
        * @param student
        */
       void updateStudent(Student student);
  2. 修改映射配置文件,增加一个修改学生的update标签

    扫描二维码关注公众号,回复: 2906073 查看本文章
    <!--配置修改学生的方法-->
       <update id="updateStudent" parameterType="com.stevensam.domain.Student">
           UPDATE student SET sname=#{sname},sex=#{sex},birthday=#{birthday},cno=#{cno} WHERE sid=#{sid}
       </update>
  3. 在MybatisTest测试类中增加一个测试修改学生方法

    /**
        * 修改学生信息
        */
       @Test
       public void testUpdate() {
           Student student = new Student();
           student.setSid(14);
           student.setSname("曹操");
           student.setSex("男");
           try {
               student.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2001-02-03"));
           } catch (ParseException e) {
               e.printStackTrace();
           }
           student.setCno(1);
           //5.使用代理对象执行方法
           mapper.updateStudent(student);
           session.commit();
       }

    执行测试方法,结果如下:

    这里写图片描述

三、删除学生

  1. 在IStudentDao接口中新增一个删除学生的方法

    /**
        * 根据学生id删除学生
        * @param id
        */
       void deleteById(int id);
  2. 修改映射配置文件,增加一个删除学生的delete标签

    <!--配置删除学生的方法-->
       <delete id="deleteById" parameterType="integer">
           DELETE FROM student where sid=#{sid}
       </delete>
  3. 在MybatisTest测试类中增加一个测试删除学生方法

    /**
        * 删除学生信息
        */
       @Test
       public void testDelete() {
           //5.使用代理对象执行方法
           mapper.deleteById(14);
           session.commit();
       }

    执行测试方法,结果如下:

    这里写图片描述

四、模糊查询

  1. 在IStudentDao接口中新增一个增加学生的方法

    /**
        * 根据名字模糊查询
        * @param name
        * @return
        */
       List<Student> findByName(String name);
  2. 修改映射配置文件,增加一个增加学生的insert标签

    <!--配置模糊查询学生的方法-->
       <select id="findByName" parameterType="String" resultType="com.stevensam.domain.Student">
           SELECT * from student WHERE sname LIKE #{name}
       </select>
  3. 在MybatisTest测试类中增加一个测试增加学生方法

    /**
        * 模糊查询学生信息
        */
       @Test
       public void testFindByName() {
           //5.使用代理对象执行方法
           List<Student> studentList = mapper.findByName("%张%");
           for (Student stu:studentList) {
               System.out.println(stu);
           }
       }

    执行测试方法,结果如下:

    这里写图片描述

    其他情况可以自行增加练习。

猜你喜欢

转载自blog.csdn.net/stevensam_lin/article/details/82085280