Mybatis系列三:映射文件-增删改查

一、创建EmployeeMapper接口

public interface EmployeeMapper {

	public Employee getEmpById(Integer id);

	public Long addEmp(Employee employee);

	public boolean updateEmp(Employee employee);

	public void deleteEmpById(Integer id);
	
}

二、创建EmployeeMapper.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.mybatis.dao.EmployeeMapper">
<!-- 
namespace:名称空间;指定为接口的全类名
id:唯一标识
resultType:返回值类型
#{id}:从传递过来的参数中取出id值
 -->
	<!-- public Employee getEmpById(Integer id); -->
	<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee">
		select * from tbl_employee where id = #{id}
	</select>

	<!-- public Long addEmp(Employee employee); -->
	<!-- parameterType可以省略 -->
	<!-- 在这里#{lastName}是指取参数employee对象的属性lastName的值 -->
	<!--获取自增主键的值:
		mysql支持自增主键,自增主键值的获取,mybatis也是利用statement.getGenreatedKeys();
		useGeneratedKeys="true";使用自增主键获取主键值策略
		keyProperty;指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装给javaBean的哪个属性-->
	<insert id="addEmp" parameterType="com.atguigu.mybatis.bean.Employee"
			useGeneratedKeys="true" keyProperty="id">
		insert into tbl_employee(last_name,email,gender) 
		values(#{lastName},#{email},#{gender})
	</insert>

	<!-- public boolean updateEmp(Employee employee);  -->
	<update id="updateEmp">
		update tbl_employee 
		set last_name=#{lastName},email=#{email},gender=#{gender}
		where id=#{id}
	</update>
	
	<!-- public void deleteEmpById(Integer id); -->
	<delete id="deleteEmpById">
		delete from tbl_employee where id=#{id}
	</delete>
</mapper>

三、测试增删该查

   /**
	 * 1、mybatis允许增删改直接定义以下类型返回值
	 * 		Integer、Long、Boolean、void
	 * 2、我们需要手动提交数据
	 * 		sqlSessionFactory.openSession();===》手动提交
	 * 		sqlSessionFactory.openSession(true);===》自动提交
	 * @throws IOException 
	 */
	@Test
	public void test01() throws IOException{
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		//1、获取到的SqlSession不会自动提交数据
		SqlSession openSession = sqlSessionFactory.openSession();
		try{
			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);

			//查询id为1的员工信息
			Employee employee = mapper.getEmpById(1);
			System.out.println(employee);

			//新增员工信息
			Employee employee1 = new Employee(null, "jerry4",null, "1");
			mapper.addEmp(employee1);
			//打印自增主键的值
			System.out.println(employee1.getId());

			//修改id为1的员工信息
			Employee employee2 = new Employee(1, "lizq","[email protected]", "0");
			boolean updateEmp = mapper.updateEmp(employee2);
			System.out.println(updateEmp);
			
			//删除id为1的员工信息
			mapper.deleteEmpById(1);

			//2、手动提交数据
			openSession.commit();
		}finally{
			openSession.close();
		}
		
	}

猜你喜欢

转载自blog.csdn.net/lizhiqiang1217/article/details/89417794