zl程序教程

您现在的位置是:首页 >  Java

当前栏目

MyBatis(三):CRUD的操作实现

2023-03-31 10:53:44 时间

在MyBatis(二)的学习中我们已经实现了第一个MyBatis程序,现在我们要实现增删改查的完整操作,我们应该思考我们需要去修改哪些内容呢?

修改三个内容:Mapper接口、对应Mapper接口的xml配置文件、测试类。

一、查询

我们尝试一个根据id查询一个用户的信息。

1.修改UserMapper接口

在其中添加我们对应的方法:

package com.jms.dao;

import java.util.List;

import com.jms.pojo.User;

public interface UserMapper {//根据id获取User信息
    User getUserbyid(int id);
}

2.修改UerMapper.xml配置文件

在其中添加我们实现接口方法的内容:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 命名空间namespace对应Mapper接口 -->
<mapper namespace="com.jms.dao.UserMapper">
  <select id="getUserbyid" parameterType="int" resultType="com.jms.pojo.User">
      select * from mybaties.user where id=#{id}
  </select>
</mapper>

我们这里在对上面几个名称进行回顾:

(1)namespace:命名空间,对应的是Mapper接口的全限定命名。

(2)id:对应的时Mapper接口中的方法名。

(3)parameterType:对应方法中传入的参数类型。

(4)resultType:对应的是SQL语句的返回值类型。

3.junit测试

1     @Test
2     public void Select() {
3         //利用工具类获取SqlSession
4         SqlSession sqlSession = MyBatisUtil.getSqlSession();
5         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
6         User user = userMapper.getUserbyid(10000);
7         System.out.println(user);
8         sqlSession.close();
9     }    

测试结果:

二、增加

1.修改UserMapper接口

添加对应的方法:

 1 package com.jms.dao;
 2 
 3 import java.util.List;
 4 
 5 import com.jms.pojo.User;
 6 
 7 public interface UserMapper {
 8     
 9     //增加用户信息
10     int addUser(User user);
11 }

2.修改UerMapper.xml配置文件

在其中添加我们实现接口方法的内容:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 命名空间namespace对应Mapper接口 -->
<mapper namespace="com.jms.dao.UserMapper">
  <!-- id对应接口中的方法 -->
  <insert id="addUser" parameterType="com.jms.pojo.User">
      insert mybaties.user value(#{id},#{username},#{password})
  </insert>
</mapper>

其中的#{id}、#{username}、#{password}都是对应着User的私有属性id、usename、password。

3.junit测试

 1 @Test
 2     public void Insert() {
 3         //利用工具类获取SqlSession
 4         SqlSession sqlSession = MyBatisUtil.getSqlSession();
 5         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
 6         userMapper.addUser(new User(10006,"jms6","123456"));
 7         //提交事务
 8         sqlSession.commit();
 9         sqlSession.close();
10     }

 

上述代码第8行的提交事务是必须的,否则无法将内容插入的数据库中。

测试结果:

 

 我们可以看到数据成功插入。

三、修改

1.修改UserMapper接口

 1 package com.jms.dao;
 2 
 3 import java.util.List;
 4 
 5 import com.jms.pojo.User;
 6 
 7 public interface UserMapper {
 8     
 9     //修改用户信息
10     int UpdateUser(User user);
11 }

2.修改UerMapper.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 命名空间namespace对应Mapper接口 -->
<mapper namespace="com.jms.dao.UserMapper">
  <!-- id对应接口中的方法 -->
  <update id="UpdateUser" parameterType="com.jms.pojo.User">
      update mybaties.user set username=#{username},password=#{password} where id=#{id}
  </update>
</mapper>

3.junit测试

 

 1 @Test
 2     public void Update() {
 3         //利用工具类获取SqlSession
 4         SqlSession sqlSession = MyBatisUtil.getSqlSession();
 5         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
 6         userMapper.UpdateUser(new User(10006, "jms7", "456123"));
 7         //提交事务
 8         sqlSession.commit();
 9         sqlSession.close();
10     }

 

测试结果:

 

 四、删除

1.修改UserMapper接口

 1 package com.jms.dao;
 2 
 3 import java.util.List;
 4 
 5 import com.jms.pojo.User;
 6 
 7 public interface UserMapper {
 8     //删除用户
 9     int DeleteUser(int id);
10 }

2.修改UserMapper.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 命名空间namespace对应Mapper接口 -->
<mapper namespace="com.jms.dao.UserMapper">
  <!-- id对应接口中的方法 -->
  <delete id="DeleteUser" parameterType="int">
      delete from mybaties.user where id=#{id}
  </delete>
</mapper>

3.junit测试

 1 @Test
 2     public void Delete() {
 3         //利用工具类获取SqlSession
 4         SqlSession sqlSession = MyBatisUtil.getSqlSession();
 5         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
 6         userMapper.DeleteUser(10006);
 7         //提交事务
 8         sqlSession.commit();
 9         sqlSession.close();
10     }

测试结果:

 

 五、总结

1.注意Mapper.xml文件中各个名称的含义。

2.注意增删改操作需要SqlSession.commit()进行提交事务。

 

(本文仅作个人学习记录用,如有纰漏敬请指正)