【SSM框架】Mybatis详解05(源码自取)增加五大功能

简介: 通过前一篇文章我们可以自己创建项目,并且测试框架,但是我们的功能十分简单。本节将为案例增加五个功能,随着项目的深入,更多知识也将涉及。

✨前言


通过前一篇文章我们可以自己创建项目,并且测试框架,但是我们的功能十分简单。


本节将为案例增加五个功能,随着项目的深入,更多知识也将涉及。本节增加功能如下:

  • 按主键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,自取链接



相关文章
|
4月前
|
SQL XML Java
mybatis-源码深入分析(一)
mybatis-源码深入分析(一)
|
2月前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
394 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
2月前
|
SQL Java 数据库连接
持久层框架MyBatisPlus
持久层框架MyBatisPlus
61 1
持久层框架MyBatisPlus
|
3月前
|
Java 数据库连接 容器
Mybatis-Plus核心功能
Mybatis-Plus核心功能
|
3月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
97 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
3月前
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
226 0
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
|
3月前
|
缓存 Cloud Native 安全
探索阿里巴巴新型ORM框架:超越MybatisPlus?
【10月更文挑战第9天】在Java开发领域,Mybatis及其增强工具MybatisPlus长期占据着ORM(对象关系映射)技术的主导地位。然而,随着技术的发展,阿里巴巴集团推出了一种新型ORM框架,旨在提供更高效、更简洁的开发体验。本文将对这一新型ORM框架进行探索,分析其特性,并与MybatisPlus进行比较。
126 0
|
4月前
|
SQL 存储 Java
原生JDBC简单实现Mybatis核心功能
本文介绍了在Vertx项目中使用Tdengine时,因缺乏异步JDBC驱动而采用同步驱动结合`vertx.executeBlocking`实现异步查询的方法。文中详细描述了自行开发的一个简易JDBC工具,该工具实现了SQL参数绑定与返回值映射至实体类的功能,简化了原生JDBC的繁琐操作。通过具体示例展示了其实现过程及代码细节,并与原生JDBC进行了对比,突显了其便捷性和实用性。
|
5月前
|
Web App开发 前端开发 关系型数据库
基于SpringBoot+Vue+Redis+Mybatis的商城购物系统 【系统实现+系统源码+答辩PPT】
这篇文章介绍了一个基于SpringBoot+Vue+Redis+Mybatis技术栈开发的商城购物系统,包括系统功能、页面展示、前后端项目结构和核心代码,以及如何获取系统源码和答辩PPT的方法。
|
5月前
|
SQL Java 数据库连接
【Java 第十三篇章】MyBatis 框架介绍
MyBatis 原名 iBATIS,2001 年由 Clinton Begin 创建,以其简易灵活著称。2010 年更名以重塑品牌形象。MyBatis 通过 SQL 映射文件将 SQL 语句与 Java 代码分离,支持编写原生 SQL 并与方法映射。具备对象关系映射功能,简化数据库记录处理。支持动态 SQL 构建,灵活应对不同查询条件。内置缓存机制,提升查询效率。相比全功能 ORM,MyBatis 提供更高 SQL 控制度和更好的维护性,并易于与 Spring 等框架集成,广泛应用于 Java 数据访问层。
51 0