关于MyBatis的增删改查操作

MyBatis的增删改查操作

CRUD一直都是MySQL中很重要的操作。这些操作主要是面向数据库或持久层的基本操作。
C:create 增加
R:Retrieve 检索
U:Update 更新
D:Delete 删除

这次的项目依然是上一篇《MyBatis在IDEA中的第一个程序》博客中的项目。

先把项目结构贴在这里。我们可以发现,和上一次的项目并没有很大的变化,起码文件并没有变多。这就是使用MyBatis的好处。
在这里插入图片描述

1、查询操作

首先,我们先来实现查询操作,第一次我们的查询全体元素操作已经实现了,这次我们来实现一下通过ID来查询我们的元素。因为我们的id被设置为主键,是不会重复的,所以就能查到特定的元素。

注意: 上一次的数据库创建时并没有设定主键,这次我们将id添加为主键。

alter table user primery key (id);
-- user可以替换成你现在的表,id也可以替换成你想作为主键的字段。

第一步: 我们先在UserDao.java接口文件中添加一个getUserById方法。这个方法需要被Mapper.xml映射实现。

//根据ID查询用户
User getUserById(int id);

第二步: 我们在与UserDao.java文件同一个文件夹下的Mapper文件,点击打开,在Mapper标签中添加一个select标签。

<!--    用id来查询元素-->
<select id="getUserById" parameterType="int" resultType="com.newProject.pojo.User">
     select * from mybatis.user where id = #{id}
 </select>
 <!--
	select标签中的id就是我们要实现的方法名,resultType就是我们语句返回的数据类型,而我们第一次见的parameterType就是我们写入方法的参数。
 -->

第三步: 我们需要在UserTest.java文件中,添加测试代码,以检测我们代码的正确性。我们直接写一个getUserById方法,来调用UserDao中的方法。

@Test
public void getUserById() {
    
    
    SqlSession sqlSession = MyBatisUtils.getSqlSession();

    UserDao mapper = sqlSession.getMapper(UserDao.class);
    User user = mapper.getUserById(2);

    System.out.println(user.toString());

    sqlSession.close();
}

上面的代码首先先使用工具类创建SqlSession,通过SqlSession获得Mapper实例,在调用Mapper中的getUserById方法获得我们想查询的元素。
注意: @test是junit的一个注解,它可以使我们的public void方法表示为一个测试方法。
最后一步,我们运行当前代码。
返回结果如下。
在这里插入图片描述
这样,我们就查找出我们需要的对象。

2、增加操作

给数据库添加元素是件很重要的事情。我们在很多地方都需要用到增加操作,比如注册啊,比如添加购物车,这些操作都是需要给数据库添加元素才能做到的。现在,我们就来学习一下怎么使用MyBatis来进行增加操作。

第一步: 我们给UserDao.java文件添加一个addUser的方法。

//增加User(insert)
int addUser(User user);

第二步: 我们同样要在Mapper文件中映射对应的方法,跟查询的添加方法一致。

<!--    插入元素-->
<insert id="addUser" parameterType="com.newProject.pojo.User">
      insert into mybatis.user (id, name, password) values (#{id}, #{name}, #{password})
</insert>

注意: 我们在导入一些参数的时候,如果有许多参数,而那些参数都属于一个实体的话,我们可以直接将参数设为实体类,同时我们在sql语句中的参数可以直接写实体类中的那些参数。

第三步: 我们需要在UserTest.java文件中,添加测试代码,以检测我们代码的正确性。我们直接写一个addUser方法,来调用UserDao中的方法。

@Test
public void addUser() {
    
    
    SqlSession sqlSession = MyBatisUtils.getSqlSession();

    UserDao mapper = sqlSession.getMapper(UserDao.class);

    int num = mapper.addUser(new User(8, "陈小生", "98211278233"));
    if (num > 0) {
    
    
        System.out.println("插入成功!");
    }

    //提交事务
    sqlSession.commit();
    sqlSession.close();
}

最后一步: 运行代码。

运行结果如下。
在这里插入图片描述
插入结果如下。
在这里插入图片描述
这样,一个元素就被插入我们的目标数据表中去了。

3、修改操作

我们经常需要修改自己的个人信息,这一步我们就需要对数据库中的数据进行修改。我们来学一下怎么用MyBatis对数据库中的数据进行修改。

第一步: 同上,我们需要在Use人Dao文件下添加一个关于修改数据的方法updateUser。

 //修改用户(update)
 int updateUser(User user);

第二步: 我们同样要在Mapper文件中映射对应的方法,跟查询的添加方法一致。

<!--    更新列表-->
<update id="updateUser" parameterType="com.newProject.pojo.User">
  update mybatis.user set name = #{name}, password = #{password} where id = #{id}
</update>

代码中的id是我们需要修改的元素的id,前面的name和password是我们想要修改的数据。

第三步: 我们需要在UserTest.java文件中,添加测试代码,以检测我们代码的正确性。我们直接写一个updateUser方法,来调用UserDao中的updateUser方法。

@Test
public void updateUser() {
    
    
    SqlSession sqlSession = MyBatisUtils.getSqlSession();

    UserDao mapper = sqlSession.getMapper(UserDao.class);

    int num = mapper.updateUser(new User(3, "王老五", "2738273873"));
    if (num > 0) {
    
    
        System.out.println("修改成功!");
    }

    sqlSession.commit();
    sqlSession.close();
}

第四步: 执行测试代码。

没执行之前的数据表如下。
在这里插入图片描述
执行后的数据表如下。
在这里插入图片描述

至此,一次对数据库的修改完成了。

4、删除操作

很多时候,删除也是很重要的,我们需要对不重要的数据或者冗余的数据进行删除,提高效率。这里,我就教大家用MyBatis来对数据表中的数据进行删除。

第一步: 同上,我们需要给删除操作在UserDao文件中定义一个方法deleteUser。

//删除用户(delete)
int deleteUser(int id);

第二步: 我们需要在Mapper文件中对delete方法进行绑定。

<!--    删除列表-->
<delete id="deleteUser" parameterType="int">
    delete from mybatis.user where id = #{
    
    id}
</delete>

注意: 这里我们可以不需要传递一个User参数了,只需要传递一个int参数作为我们要删除的User元素的id。

第三步: 我们需要编写关于deleteUser的测试代码,检测我们的deleteUser代码是否可用。

@Test
public void deleteUser() {
    
    
     SqlSession sqlSession = MyBatisUtils.getSqlSession();

     UserDao mapper = sqlSession.getMapper(UserDao.class);

     int num = mapper.deleteUser(4);
     if (num > 0) {
    
    
         System.out.println("删除成功!");
     }

	sqlSession.commit();
	sqlSession.close();
}

第四步: 执行测试代码。

执行代码之前的数据表如下。
在这里插入图片描述
执行代码之后的数据表如下。
在这里插入图片描述
至此,一次删除操作就完成了。

猜你喜欢

转载自blog.csdn.net/qq_44116023/article/details/108813119