【SSM框架】Mybatis详解05(源码自取)增加五大功能
- 🧛♂️个人主页:杯咖啡
- 💡进步是今天的活动,明天的保证!
- ✨目前正在学习:SSM框架,算法刷题
- 👉本文收录专栏:SSM框架解析
- 🙌牛客网,刷算法过面试的神级网站,用牛客你也牛。 👉免费注册和我一起学习刷题👈
- 🐳希望大家多多支持🥰一起进步呀!
- 😎The great tragedy of life is not that men perish, but that they cease to love.
人生的最大悲剧不是死亡,而是他们不再去爱。-威廉·萨默塞特·毛姆
✨前言
通过前一篇文章我们可以自己创建项目,并且测试框架,但是我们的功能十分简单。
本节将为案例增加五个功能,随着项目的深入,更多知识也将涉及。本节增加功能如下:
- 按主键id查询学生信息
- 按学生名称模糊查询
- 增加学生
- 按主键删除学生
- 更新学生
- 一起来学习实践吧!!!!!*
增加功能
按主键id查询学生信息
首先我们添加sql语句,这样就很方便了。
我们只需要 修改StudentMapper.xml文件就好了。
<!-- 按主键id查询学生信息 Student getById(Integer id); --> <!-- parameterType: 表示有参数输入 resultType:输出结果的泛型,一定注意写的是泛型 --> <select id="getById" parameterType="int" resultType="com.longlong.pojo.Student"> select id,name,email,age from student where id=#{id} </select>
接下来就可以测试了,我们再Mytest类里添加以下代码进行测试。
@Test public void testGetById() throws IOException { //读取核心配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //获取工厂对象 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); //获取sqlSession对象,本对象可以编译和执行sql代码 SqlSession sqlSession = factory.openSession(); //注意,这里使用的方法与 getAll 的方法不一样哦,因为这个需要传入参数。 Student student = sqlSession.selectOne("ll.getById",1); System.out.println(student); //关闭sqlSession对象 sqlSession.close(); } }
测试结果,这样表示正确哦!
按学生名称模糊查询
按照学生名称模糊查询这个功能也是很常见的哦!
接下来我们就来完成它吧!
首先我们依旧修改StudentMapper.xml文件。
<!-- 按学生名称模糊查询 List<Student> getByName(String name); --> <select id="getByName" parameterType="string" resultType="com.longlong.pojo.Student"> select id,name,email,age from student where name like '%${name}%' </select>
接下来就可以编写测试类了。加入以下代码。本次操作和第一个比较像,详解看第一个代码注释哦!!
@Test public void testGetByName() throws IOException { InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); SqlSession sqlSession = factory.openSession(); List<Student> list = sqlSession.selectList("ll.getByName","李"); // list.forEach(student -> System.out.println(student)); for (Student student : list){ System.out.println(student); } sqlSession.close(); }
注意:这里的接收的结果是列表,因为模糊查询可能有很多个结果,所以要列表来存起来哦!
看结果咯
增加学生
增加功能也还是个常见的功能。以下的步骤和之前的一样哦,下面只写细节。
修改StudentMapper.xml文件。
<!-- 增加学生 int insert(Student stu); 实体类: private Integer id; private String name; private String email; private Integer age; --> <insert id="insert" parameterType="com.longlong.pojo.Student"> insert into student (name,email ,age) values(#{name},#{email},#{age}) </insert>
测试类,注意这里一定要手动提交哦
@Test public void testInsert() throws IOException { InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); SqlSession sqlSession = factory.openSession(); int num = sqlSession.insert("ll.insert",new Student("张三","208970239@qq.com",20)); SqlSession.commit(); System.out.println(num); sqlSession.close(); }
结果展示如下
按主键删除学生
修改StudentMapper.xml文件
<!-- 按主键删除学生 int delete(Integer id); --> <delete id="delete" parameterType="int" > delete from student where id=#{id} </delete>
添加测试类,注意,这里一定要手动提交哦
@Test public void testDelete() throws IOException { InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); SqlSession sqlSession = factory.openSession(); int num = sqlSession.delete("ll.delete", 2 ); sqlSession.commit(); System.out.println(num); sqlSession.close(); }
结果展示如下
更新学生
修改StudentMapper.xml文件
<!-- 更新学生 int update(Student stu); --> <update id="update" parameterType="com.longlong.pojo.Student"> update student set name=#{name},email=#{email},age=#{age} where id=#{id} </update>
修改测试类,注意手动提交
@Test public void testUpdate() throws IOException { InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); SqlSession sqlSession = factory.openSession(); int num = sqlSession.update("ll.update", new Student(3,"王柳","788078@qq.com",20) ); sqlSession.commit(); System.out.println(num); sqlSession.close(); }
结果如下
)
✨总结
今天我们我们添加了一些常用的功能,并且成功。用了框架之后,每次的增加功能就变的十分简单,我们主需要专注sql的编写就好。
接下来后面会详细讲解MyBatis对象分析,代码注意事项,继续改造案例
本次源码放在代码仓库gitee,自取链接
/>