MyBatis实现增删改查
经过上一次的学习,我们初步学习了MyBatis的初级知识,这一次我们来学习进一步的增删改查。
经历了我们上一步的配置,现在我们只需要改动userMapper,userMapper.xml和test中的部分代码就可以实现。
我把每个方法都写在同一个文件中,这样可以有效对比他们的区别。
以下是userMapper的代码。
package com.Dao; import com.Pojo.users; import java.util.List; public interface userDao { //获取全部用户 List<users> getUserlist(); //按照id查询。 users getUserListById(String id); //插入一个id int addUser(users user); //修改一个id int updateUser(users user); //删除一个id int deleteUser(String id); }
从上面代码我们明白传递的值一定要区分开。
以下是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"> <mapper namespace = "com.Dao.userDao"> <select id="getUserlist" resultType="com.Pojo.users"> select * from jdbc1.users; </select> <select id="getUserListById" resultType="com.Pojo.users" parameterType="String"> select * from jdbc1.users where name = #{id}; </select> <!--对象中的属性可以直接取出来--> <insert id="addUser" parameterType="com.Pojo.users"> insert into jdbc1.users(name,pwd,number,danweixinxi) values (#{name},#{pwd},#{number},#{danweixinxi}) </insert> <update id="updateUser" parameterType="com.Pojo.users"> update jdbc1.users set pwd=#{pwd},number=#{number},danweixinxi=#{danweixinxi} where name=#{name}; </update> <delete id="deleteUser" parameterType="String"> delete from jdbc1.users where name=#{id}; </delete> </mapper>
以下是test中的代码。
package com.Dao; import com.Pojo.users; import com.utils.MyBatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.List; public class userDaoTest { @Test public void test() { //获取sqlSesson对象 SqlSession sqlSession; sqlSession = MyBatisUtils.getSqlSession(); //方式一 建议使用 获取这个类 不需要进行强转,更安全 userDao mapper = sqlSession.getMapper(userDao.class); List<users> UserList = mapper.getUserlist(); //方式二 直接用类里面具体的方法 //List<users> UserList = sqlSession.selectList("com.Dao.userDao.getUserlist"); for (users users : UserList) { System.out.println(users); } sqlSession.close(); } @Test public void test2(){ SqlSession sqlSession; sqlSession = MyBatisUtils.getSqlSession(); userDao mapper = sqlSession.getMapper(userDao.class); users user = mapper.getUserListById("名字"); System.out.println(user); sqlSession.close(); } //增删改需要提交事务 @Test public void test3(){ SqlSession sqlSession; sqlSession = MyBatisUtils.getSqlSession(); userDao mapper = sqlSession.getMapper(userDao.class); int res = mapper.addUser(new users("科泽华","shagou","niuniuniu","studgouwo")); if(res>0) { System.out.println("插入成功"); } //提交事务必须要做,没有提交事物肯定插入不进来(会报插入成功,但是数据库里面不会改)。 sqlSession.commit(); sqlSession.close(); } @Test public void test4(){ SqlSession sqlSession; sqlSession = MyBatisUtils.getSqlSession(); userDao mapper = sqlSession.getMapper(userDao.class); int res = mapper.updateUser(new users("科泽华","嗡嗡嗡","不牛不牛","不在狗窝")); if(res>0) { System.out.println("修改成功"); } sqlSession.commit(); sqlSession.close(); } @Test public void test5(){ SqlSession sqlSession; sqlSession = MyBatisUtils.getSqlSession(); userDao mapper = sqlSession.getMapper(userDao.class); int res = mapper.deleteUser("Null"); if(res>0) { System.out.println("删除成功"); } sqlSession.commit(); sqlSession.close(); } }
其中最重要的我认为是提交事务,不提交事务的话它显示成功,但是后台数据库并没有受到改变。
模板化的东西确实很好用,我觉得技术的革新就是这样,让人们理解的东西变多,需要动。,一点点去改的东西越来越少。与时俱进才是我们真正应有的东西。