Mybatis入门基础CRUD(三)

CRUD操作步骤

  1. 编写接口类
  2. 编写接口对应的mapper.xml文件
  3. 通过SqlSession来获取接口进而调用接口中方法执行(注意事务处理)

查询语句

接口中的方法:

public interface UserDao {
    
    
    //查询所有的用户
    List<User> selectUsers();
    //根据id查询用户
    User queryById(int id);
   
}

UserMapper.xml中查询的SQL语句:

<?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绑定一个对应的dao/mapper接口-->
<mapper namespace="dao.UserDao">
<!--    select查询语句-->
    <select id="selectUsers" resultType="entity.User">
        select * from t_user
    </select>

    <select id="queryById" resultType="entity.User" parameterType="int">
        select * from t_user where id=#{id}
    </select>
</mapper>

在这里插入图片描述

测试类:

public class Test {
    
    
    @org.junit.Test
    public void test(){
    
    
        //通过封装好的工具类获取SqlSession会话
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        //通过接口类型class获取接口对象实例(动态代理)
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        //执行接口中的方法
        User user = mapper.queryById(6);
        System.out.println(user); 
        //关闭SqlSession
        sqlSession.close();
    }
}

在这里插入图片描述
插入语句

//插入一条数据
    void addUser(User user);
<insert id="addUser" parameterType="entity.User" >
        insert into t_user values(#{id},#{username},#{password},#{gender},#{regist_time})
    </insert>

测试类:

public class Test {
    
    
    @org.junit.Test
    public void test(){
    
    
        //通过封装好的工具类获取SqlSession会话
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        //通过接口类型class获取接口对象实例(动态代理)
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        //执行接口中的方法
        mapper.addUser(new User(10,"ddd","123456",1,new Date()));

        List<User> users = mapper.selectUsers();
        for (User u:users) {
    
    
            System.out.println(u);
        }
        //关闭SqlSession
        sqlSession.close();
    }
}

注意:增删改需要提交事务,此时执行结果并未提交到数据库中
在这里插入图片描述
在这里插入图片描述

public class Test {
    
    
    @org.junit.Test
    public void test(){
    
    
        //通过封装好的工具类获取SqlSession会话
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        //通过接口类型class获取接口对象实例(动态代理)
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        //执行接口中的方法
        mapper.addUser(new User(10,"ddd","123456",1,new Date()));
        List<User> users = mapper.selectUsers();
        for (User u:users) {
    
    
            System.out.println(u);
        }
        //提交事务
        sqlSession.commit();
        //关闭SqlSession
        sqlSession.close();
    }
}

此时再执行结果:
在这里插入图片描述
在这里插入图片描述
或者在通过SqlSessionFactory工厂获取SqlSession会话时设置自动提交事务也可

SqlSession sqlSession = factory.openSession(true);

更新语句

	//更新一条数据
    void updateUser(User user);
 	<update id="updateUser" parameterType="entity.User">
        update t_user set password=#{password} =  where id=#{id};
    </update>
public class Test {
    
    
    @org.junit.Test
    public void test(){
    
    
        //通过封装好的工具类获取SqlSession会话
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        //通过接口类型class获取接口对象实例(动态代理)
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        //执行接口中的方法
        mapper.updateUser(new User(6,null,"999",null,null));

        sqlSession.commit();
        //关闭SqlSession
        sqlSession.close();
    }
}

在这里插入图片描述

删除语句

//删除一条数据
    void deleteUser(int id);
<delete id="deleteUser" parameterType="int">
        delete from t_user where id=#{id}
    </delete>

测试:

public class Test {
    
    
    @org.junit.Test
    public void test(){
    
    
        //通过封装好的工具类获取SqlSession会话
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        //通过接口类型class获取接口对象实例(动态代理)
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        //执行接口中的方法
        mapper.deleteUser(10);
        sqlSession.commit();
        //关闭SqlSession
        sqlSession.close();
    }
}

删除前:
在这里插入图片描述
删除后:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45608165/article/details/113536454