《Mybatis学习-2》Mybatis的接口式编程

58 阅读1分钟

mybatis最基本的增删改查是存在一些问题的。因为他第二个参数的类型是object类型,但是数据库中对应的id是int类型,我们这边传入字符(比如:abc)的话,运行是会出错的。所以为了能够限制参数的类型,我们还是使用接口式编程吧。

Employee employee = openSession.selectOne(
                   "njci.software.EmployeeMapper.selectBlog",  1);

1、创建接口

public interface EmployeeMapper {

	Employee getEmpById(Integer id);

}

 2、为了接口和xml文件绑定,我们需要将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="cc_study.mapper.EmployeeMapper">
<!-- 
 	namespace:名称空间  ;对应的接口名
 	id:唯一标识
 	resultType:返回值类型	
 	#{id}:从传递过来的参数中取的id值
 -->
	<select id="getEmpById" resultType="cc_study.pojo.Employee">
		select * from employee where id = #{id}
	</select>
</mapper>

3、测试

(1)创建SqlSessionFactory

(2)创建SqlSession

(3)取得接口的实现类,调用方法

	@Test
	public void testMapper() throws IOException {
		String resource = "mybatis_config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
				.build(inputStream);
		SqlSession openSession = sqlSessionFactory.openSession();
		try {
			EmployeeMapper employeeMapper = openSession.getMapper(EmployeeMapper.class);
			Employee employee = employeeMapper.getEmpById(1);
			System.out.println(employee);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			openSession.close();
		}
	}