MyBatis(三):CRUD的操作实现
在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()进行提交事务。
(本文仅作个人学习记录用,如有纰漏敬请指正)