天天看點

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();
           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();
           student.setSname("曹操");
           student.setSex("男");
           try {
               student.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2001-02-03"));
           } catch (ParseException e) {
               e.printStackTrace();
           }
           student.setCno();
           //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();
           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操作
    其他情況可以自行增加練習。

繼續閱讀