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();
}
第四步: 执行测试代码。
执行代码之前的数据表如下。
执行代码之后的数据表如下。
至此,一次删除操作就完成了。