这里用Mapper动态代理方式实现dao层.
介绍:
- Mapper接口开发方式只需要程序员编写Mapper接口(相当于Dao层),由Maybatis框架根据接口定义创建接口的动态代理方式,代理对象方法体同上边Dao接口实现类方法
Mapper接口开发规范:
- Mapper.xml文件中的namespace与mapper接口的类路径相同
- Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
- Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
- Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
创建一个Mapper.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="cn.test.mybatis.mapper.UserMapper">
<!-- 根据id获取用户信息 -->
<select id="findUserById" parameterType="int" resultType="cn.test.mybatis.po.User">
select * from user where id = #{id}
</select>
</mapper>
注意:
- 这里的namespace的值是UserMapper接口路径(相当于dao层)
测试:
public class UserServeic {
/*获得一个会话工厂*/
SqlSessionFactory ssf = null;
@Before
public void creatFactory(){
InputStream input = null;
try {
input = Resources.getResourceAsStream("SqlMapConfig.xml");
} catch (IOException e) {
e.printStackTrace();
}
ssf = new SqlSessionFactoryBuilder().build(input);
}
/*通过id查询*/
@Test
public void testById(){
/*获得session*/
SqlSession session =ssf.openSession();
/*获得mapper接口的代理对象*/
UserMapper userMapper = session.getMapper(UserMapper.class);
/*调用代理对象*/
User user = userMapper.testById(1);
System.out.println(user.getUser());
session.close();
}