欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mybatis入门(二)之CRUD操作

程序员文章站 2022-03-10 17:09:13
...

一、增加学生

​ 在上一篇文章,已经介绍了如何简单的搭建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();
       }

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

    mybatis入门(二)之CRUD操作
    mybatis入门(二)之CRUD操作

二、修改学生

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

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

    <!--配置修改学生的方法-->
       <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();
       }

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

    mybatis入门(二)之CRUD操作

三、删除学生

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

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

    mybatis入门(二)之CRUD操作

四、模糊查询

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

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

    mybatis入门(二)之CRUD操作

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

相关标签: mybatis