victory的博客

长安一片月,万户捣衣声

0%

MyBatis | 增删改查

MyBatis CRUD

按照MyBatis搭建过程进行项目搭建,
并在mybatis-config.xml中将按如下方式引入映射文件:

<!-- 引入映射文件 -->
<mappers>
    <!-- <mapper resource="EmpMapper.xml" />
    <mapper resource="DeptMapper.xml"></mapper> -->
    
    <!-- 此种写法要求mapper接口和mapper映射文件在同一个包下 -->
    <package name="com.atguigu.mapper"/>
    
</mappers>

CRUD 案例

1.项目目录

2.Emp.java

package com.atguigu.bean;

public class Emp {
    private Integer eid;
    private String ename;
    private Integer age;
    private String sex;
    public Integer getEid() {
        return eid;
    }
    public void setEid(Integer eid) {
        this.eid = eid;
    }
    public String getEname() {
        return ename;
    }
    public void setEname(String ename) {
        this.ename = ename;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "Emp [eid=" + eid + ", ename=" + ename + ", age=" + age + ", sex=" + sex + "]";
    }
    public Emp(Integer eid, String ename, Integer age, String sex) {
        super();
        this.eid = eid;
        this.ename = ename;
        this.age = age;
        this.sex = sex;
    }
    public Emp() {
        super();
        // TODO Auto-generated constructor stub
    }
    
    
    
}

3.EmpMapper.java

package com.atguigu.mapper;

import java.util.List;

import com.atguigu.bean.Emp;

public interface EmpMapper {
    //根据eid查询员工信息
    Emp getEmpByEid(String eid);
    
    //获取所有的员工信息
    List<Emp> getAllEmp();
    
    //添加员工信息
    void addEmp(Emp emp);
    
    //修改员工信息
    void updateEmp(Emp emp);
    
    //删除员工信息
    Integer deleteEmp(String id);
}

4.EmpMapper.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.atguigu.mapper.EmpMapper">
    <!-- Emp getEmpByEid(String eid); -->
    <select id="getEmpByEid" resultType="Emp">
        select eid,ename,age,sex from emp where eid=#{eid}
    </select>
    
    <!-- List<Emp> getAllEmp(); -->
    <select id="getAllEmp" resultType="Emp">
        select eid,ename,age,sex from emp
    </select>
    
    <!-- void addEmp(Emp emp); -->
    <insert id="addEmp">
        insert into emp values(null, #{ename}, #{age}, #{sex})
    </insert>
    
    <!-- void updateEmp(Emp emp); -->
    <update id="updateEmp" parameterType="Emp">
        update emp set ename=#{ename},age=#{age},sex=#{sex} where eid=#{eid}
    </update>
    
    <!-- void deleteEmp(String id);  -->
    <delete id="deleteEmp">
        delete from emp where eid=#{eid}
    </delete>
</mapper>

5.TestCRUD.java

package com.atguigu.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

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 org.junit.Test;

import com.atguigu.bean.Emp;
import com.atguigu.mapper.EmpMapper;

public class TestCRUD {
    @Test
    public void testCRUD() throws IOException{
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//        SqlSession sqlSession = sqlSessionFactory.openSession();//需要手动处理事务
        SqlSession sqlSession = sqlSessionFactory.openSession(true);//自动处理事务
        EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
        //测试:根据eid获取员工信息
//        Emp emp = empMapper.getEmpByEid("3");
//        System.out.println(emp);
        
        //测试:获取所有的员工信息
//        List<Emp> list = empMapper.getAllEmp();
//        System.out.println(list);
        
        //测试:添加员工信息
//        empMapper.addEmp(new Emp(null,"admin",23,"女"));
//        sqlSession.commit();//提交事务
        
        //测试:修改员工信息
        empMapper.updateEmp(new Emp(2, "张二", 33, "女"));
        
        //测试:删除员工信息
//        Integer rowNum = empMapper.deleteEmp("5");
//        System.out.println(rowNum);//返回值类型为Integer:返回受影响的行数 Boolean:·
    }
}