系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
Mybatis之增删改查


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、MyBatis新增
  • 二、MyBatis修改
  • 三、MyBatis删除
  • 四、MyBatis查询
    • 根据ID查询
    • 模糊查询
    • 分页查询
  • 总结

前言

提示:这里可以添加本文要记录的大概内容:

好的,以下是为你生成的生成 Mybatis 之增删改查博客的前言:
在当今的软件开发领域,Java 仍然是最受欢迎和广泛使用的编程语言之一。而在 Java Web 开发中,MyBatis 是一个非常流行的 ORM(对象关系映射)框架,它简化了数据库操作,提高了开发效率。
在这篇博客中,我将详细介绍如何使用 MyBatis 实现增删改查操作。我们将从 MyBatis 的基础知识开始,逐步引导你完成一个完整的示例项目,涵盖了增加、删除、修改和查询数据的常见操作。
通过学习本博客,你将了解到如何使用 MyBatis 创建映射文件、配置数据源以及编写 SQL 查询语句。
无论你是刚刚开始学习 MyBatis,还是已经有一定经验的开发人员,这篇博客都将为你提供有用的指导和实践经验。让我们一起开始使用 MyBatis 进行高效、灵活的数据库操作吧!


提示:以下是本篇文章正文内容,下面案例可供参考

一、MyBatis新增

1.在持久层添加新增方法

void add(User user);

2.在UserMapper.xml映射文件添加标签

<insert id="add" parameterType="com.zhangsan.pojo.User"> insert into user(username,sex,address) values(#{username},#{sex},#{address})</insert>

注意:添加方法的标签为insert
3.测试编写方法

@Testpublic void testAdd() throws Exception {InputStream is= Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();SqlSessionFactory factory = builder.build(is);SqlSession session = factory.openSession();UserMapper userMapper = session.getMapper(UserMapper.class);User user = new User("程序员", "男", "上海");userMapper.add(user);// 提交事务session.commit();session.close();is.close();}

注意:MyBatis事务默认手动提交,所以在执行完增删改方法后,需要手动调用SqlSession对象的事务提交方法,否则数据库将不发生改变。

二、MyBatis修改

1.在持久层添加新增方法

void update(User user);

2.在UserMapper.xml映射文件添加标签

<update id="update" parameterType="com.zhangsan.pojo.User"> update user set username = #{username}, sex= #{sex}, address=#{address} where id = #{id}</update>

注意:添加方法的标签为update
3.优化测试类,编写测试方法
我们发现MyBatis的测试方法在操作数据库前都需要获取代理对象,操作数据库后都需要释放资源,可以利用Junit的前置后置方法,优化测试类代码。

InputStream is = null;SqlSession session = null;UserMapper userMapper = null;@Beforepublic void before() throws IOException {// (1)读取核心配置文件is = Resources.getResourceAsStream("SqlMapConfig.xml");// (2)创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();// (3)SqlSessionFactoryBuilder对象获取SqlSessionFactory对象SqlSessionFactory factory = builder.build(is);// (4)SqlSessionFactory对象获取SqlSession对象session = factory.openSession();// (5)获取代理对象userMapper = session.getMapper(UserMapper.class);}@Afterpublic void after() throws IOException {// 释放资源session.close();is.close();}
@Testpublic void testUpdate(){User user = new User(8,"程序员1","女","深圳");userMapper.update(user);session.commit();}

三、MyBatis删除

1.在持久层添加新增方法

void delete(int userId);

2.在UserMapper.xml映射文件添加标签

<delete id="delete" parameterType="int"> delete from user where id = #{id}</delete>

注意:添加方法的标签为delete
3.编写测试方法

@Testpublic void testDelete(){userMapper.delete(8);session.commit();}

四、MyBatis查询

根据ID查询

1.在持久层添加新增方法

User findById(int userId);

2.在UserMapper.xml映射文件添加标签

<select id="findById" parameterType="int" resultType="com.zhangsan.pojo.User"> select * from user where id = #{userId}</select>

3.编写测试方法

@Testpublic void testFindById(){User user = userMapper.findById(1);System.out.println(user);}

模糊查询

1.在持久层添加新增方法

List<User> findByLike(String username);

2.在UserMapper.xml映射文件添加标签

<select id="findByLike" parameterType="string" resultType="com.itbaizhan.user.User"> select * from user where username like #{name}</select>

3.编写测试方法

@Testpublic void testFindByNameLike(){List<User> users = userMapper.findByNameLike("%王%");for (User user:users){System.out.println(user); }}

但是,userMapper.findByNameLike(“%王%”);这样写非常的不美观,如果使用#还不想在调用方法的参数中添加%,可以使用bind标签,bind标签允许我们在 Sql语句以外创建一个变量,并可以将其绑定到当前的Sql语句中,还可以有效的解决sql注入的问题。用法如下:

<select id="findByUsernameLike" parameterType="string" resultType="com.zhangsan.pojo.User"><bind name="likeName" value="'%'+username+'%'"/> select * from user where username like #{likeName}</select>

测试方法:

@Testpublic void testFindByNameLike(){List<User> users = userMapper.findByNameLike("王");for (User user:users){System.out.println(user); }}

分页查询

在接口方法的参数列表中通过@Param定义参数名称,在Sql语句中通过注解中所定义的参数名称指定参数位置。此方式参数比较直观的,推荐使用。
1.持久层接口方法

List<User> findPage1(@Param("startIndex") int startIndex, @Param("pageSize")int pageSize);

2.在UserMapper.xml映射文件添加标签

<select id="findPage1" resultType="com.itbaizhan.mapper.User">select * from user limit #{startIndex},#{pageSize}</select>

3.编写测试方法

@Testpublic void testFindPage1(){List<User> users = userMapper.findPage1(3,3);users.forEach(System.out::println);}

总结

提示:这里对文章进行总结:

在这篇博客中,我们深入探讨了如何使用 MyBatis 进行数据库的增删改查操作。通过详细的示例和解释,我们了解了 MyBatis 的核心概念和工作原理。
首先,我们学习了如何使用 MyBatis 创建映射文件,将数据库表与 Java 对象进行关联。然后,我们通过编写 SQL 查询语句和对应的 Java 方法,实现了增加、删除、修改和查询数据的功能。
在示例项目中,我们涵盖了常见的增删改查操作,包括插入新记录、删除现有记录、更新记录的字段值以及根据条件查询数据。我们还学习了如何处理结果集,以及如何使用 MyBatis 的参数传递机制。
通过学习和实践,我们掌握了使用 MyBatis 进行数据库操作的基本技能。MyBatis 提供了一种简洁而高效的方式来与数据库交互,使我们的开发工作更加便捷和高效。
希望这篇博客对你有所帮助,如果你有任何问题或需要进一步了解 MyBatis,请随时留言。