Mybatis之增删改查
系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
Mybatis之增删改查
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
好的,以下是为你生成的生成 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.测试编写方法
@Test
public 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;
@Before
public 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);
}
@After
public void after() throws IOException {
// 释放资源
session.close();
is.close();
}
@Test
public 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.编写测试方法
@Test
public 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.编写测试方法
@Test
public 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.编写测试方法
@Test
public 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>
测试方法:
@Test
public 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.编写测试方法
@Test
public void testFindPage1(){
List<User> users = userMapper.findPage1(3,3);
users.forEach(System.out::println);
}
总结
提示:这里对文章进行总结:
在这篇博客中,我们深入探讨了如何使用 MyBatis 进行数据库的增删改查操作。通过详细的示例和解释,我们了解了 MyBatis 的核心概念和工作原理。
首先,我们学习了如何使用 MyBatis 创建映射文件,将数据库表与 Java 对象进行关联。然后,我们通过编写 SQL 查询语句和对应的 Java 方法,实现了增加、删除、修改和查询数据的功能。
在示例项目中,我们涵盖了常见的增删改查操作,包括插入新记录、删除现有记录、更新记录的字段值以及根据条件查询数据。我们还学习了如何处理结果集,以及如何使用 MyBatis 的参数传递机制。
通过学习和实践,我们掌握了使用 MyBatis 进行数据库操作的基本技能。MyBatis 提供了一种简洁而高效的方式来与数据库交互,使我们的开发工作更加便捷和高效。
希望这篇博客对你有所帮助,如果你有任何问题或需要进一步了解 MyBatis,请随时留言。