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();
    }

}

 

其中最重要的我认为是提交事务,不提交事务的话它显示成功,但是后台数据库并没有受到改变。

模板化的东西确实很好用,我觉得技术的革新就是这样,让人们理解的东西变多,需要动。,一点点去改的东西越来越少。与时俱进才是我们真正应有的东西。

 

posted @ 2022-03-07 21:18  吕洞玄  阅读(87)  评论(0编辑  收藏  举报