一、增加學生
在上一篇文章,已經介紹了如何簡單的搭建maybatis環境以及一個簡單的入門案例,本文也是基于上一篇内容進行擴充,之前内容掌握的話,相信接下來的操作一定不會難倒你。如果需要查閱,以下是文章連結:
https://blog.csdn.net/stevensam_lin/article/details/82048519
好了,現在就開始給大家講解一下,如何增加學生資訊。
- 在IStudentDao接口中新增一個增加學生的方法
/** * 插入學生 * @param student */ void addStudent(Student student);
- 修改映射配置檔案,增加一個增加學生的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語句送出之後執行傳回。
- 在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(); }
執行測試方法,結果如下:
二、修改學生
- 在IStudentDao接口中新增一個修改學生的方法
/** * 修改學生資訊 * @param student */ void updateStudent(Student student);
- 修改映射配置檔案,增加一個修改學生的update标簽
<!--配置修改學生的方法--> <update id="updateStudent" parameterType="com.stevensam.domain.Student"> UPDATE student SET sname=#{sname},sex=#{sex},birthday=#{birthday},cno=#{cno} WHERE sid=#{sid} </update>
- 在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(); }
執行測試方法,結果如下:
三、删除學生
- 在IStudentDao接口中新增一個删除學生的方法
/** * 根據學生id删除學生 * @param id */ void deleteById(int id);
- 修改映射配置檔案,增加一個删除學生的delete标簽
<!--配置删除學生的方法--> <delete id="deleteById" parameterType="integer"> DELETE FROM student where sid=#{sid} </delete>
- 在MybatisTest測試類中增加一個測試删除學生方法
/** * 删除學生資訊 */ @Test public void testDelete() { //5.使用代理對象執行方法 mapper.deleteById(); session.commit(); }
執行測試方法,結果如下:
四、模糊查詢
- 在IStudentDao接口中新增一個增加學生的方法
/** * 根據名字模糊查詢 * @param name * @return */ List<Student> findByName(String name);
- 修改映射配置檔案,增加一個增加學生的insert标簽
<!--配置模糊查詢學生的方法--> <select id="findByName" parameterType="String" resultType="com.stevensam.domain.Student"> SELECT * from student WHERE sname LIKE #{name} </select>
- 在MybatisTest測試類中增加一個測試增加學生方法
/** * 模糊查詢學生資訊 */ @Test public void testFindByName() { //5.使用代理對象執行方法 List<Student> studentList = mapper.findByName("%張%"); for (Student stu:studentList) { System.out.println(stu); } }
執行測試方法,結果如下:
其他情況可以自行增加練習。