mybatis入门(二)之CRUD操作
一、增加学生
在上一篇文章,已经介绍了如何简单的搭建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(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(); }
执行测试方法,结果如下:
二、修改学生
-
在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(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(); }
执行测试方法,结果如下:
三、删除学生
-
在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(14); 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); } }
执行测试方法,结果如下:
其他情况可以自行增加练习。
上一篇: Mybatis多表连接多对多例子工程(补充易百教程缺失部分)
下一篇: log4j的学习使用