mybatis的CRUD操作(增删改查


前提

每一个Dao.xml或者说Mapper.xml都要绑定映射在sqlMapConfig.xml的数据库配置文件中

    
        
        
        
    

Dao.xml文件需要将对应的Dao类绑定在命名空间



    

Mybatis工具类

为了调用方便我们准备一个工具类

package com.sjj.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MybatisUtils {
    private static InputStream in;
    private static SqlSessionFactory factory;
    static {
        try {
            // 1,读取配置文件
            in = Resources.getResourceAsStream("SqlMapConfig.xml");
            // 2,创建SqlSessionFactory工厂
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            factory = builder.build(in);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 3,获取SqlSession对象
    public static SqlSession getSqlSession(){
        return factory.openSession();
    }

}

查询:SELECT

基本样式

    

实践

实现一个方法:根据性别查找用户

  1. 在用户持久层接口UserDao中添加方法
    // 根据sex查找用户
    List findUserBySex(String sex);
  1. 在UserDao.xml的命名空间中添加一条select语句

    

  1. 查看数据库配置文件中是否绑定了UserDao.xml文件
    
    
        
        
        
    
  1. 编写测方法
    @Test
    public void testFindUserBYSex(){
        // 3,获取SqlSession对象
        SqlSession session = MybatisUtils.getSqlSession();
        // 4,使用SqlSession创建dao接口的代理对象
        UserDao userdao = session.getMapper(UserDao.class);
        // 5,使用代理对象执行接口
        List users = userdao.findUserBySex("女");
        for(User user:users){
            System.out.println(user);
        }
        // 释放资源
        session.close();
    }

增加:INSERT

基本样式

    
        insert into 语句;
    

实践

由于前面已经将UserDao.xml绑定在数据库配置文件中,接下来就不需要重复查看
不过新添加一个xml文件一定要记得绑定哦
实现一个方法:插入一个用户

  1. 在用户持久层接口UserDao中添加方法
    // 添加一个用户
    int addUser(User user);
  1. 在UserDao.xml的命名空间中添加一条insert语句
    
        insert into user (id,username,birthday,sex,address) values (#{id},#{username},#{birthday},#{sex},#{address});
    
  1. 编写测试方法
    @Test
    public void testAddUser(){
        SqlSession session = MybatisUtils.getSqlSession();
        UserDao userdao = session.getMapper(UserDao.class);
        User user = new User(99, "青眼白龙", new Date(), "女", null);
        userdao.addUser(user);
        // **注意增删改需要提交事务**
        session.commit();
        session.close();
    }

更新/修改:UPDATE

基本样式

    
        update 语句;
    

实践

实现一个方法:

  1. 在用户持久层接口UserDao中添加方法
    // 通过id更新用户
    int updateUserById(User user);
  1. 在UserDao.xml的命名空间中添加一条update语句
    
        update user
        set address = #{address},username=#{username},birthday=#{birthday},sex=#{sex}
        where id = #{id};
    
  1. 编写测试方法
    @Test
    public void testUpUserById(){
        SqlSession session = MybatisUtils.getSqlSession();
        UserDao userdao = session.getMapper(UserDao.class);
        User user = new User(99, "青眼白龙", new Date(), "女", "古埃及");
        int ans = userdao.updateUserById(user);
        if(ans>0)
            System.out.println("更新成功!");
        // **注意增删改需要提交事务**
        session.commit();
        session.close();
    }

删除:DELETE

基本样式

    
        delete 语句;
    

实践

实现一个方法:

  1. 在用户持久层接口UserDao中添加方法
    // 通过id删除用户
    int deleteUserById(int id);
  1. 在UserDao.xml的命名空间中添加一条delete语句
    
        delete
        from user
        where id = #{id};
    
  1. 编写测试方法
    @Test
    public void testDeleteUserById(){
        SqlSession session = MybatisUtils.getSqlSession();
        UserDao userdao = session.getMapper(UserDao.class);
        int ans = userdao.deleteUserById(99);
        if(ans>0)
            System.out.println("删除成功!");
        // **注意增删改需要提交事务**
        session.commit();
        session.close();
    }