您的位置:首页 > 其它

MyBatis动态代理的方式DAO开发设置

2018-01-07 23:29 302 查看
SqlMapConfig.xml配置文件1

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 和spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper class="com.test.dao.UserMapper"/>
</mappers>
</configuration>

UserMapper.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">
<!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
<mapper namespace="com.test.dao.UserMapper">

<!-- id:statement的id 或者叫做sql的id-->
<!-- parameterType:声明输入参数的类型 -->
<!-- resultType:声明输出结果的类型,应该填写pojo的全路径 -->
<!-- #{}:输入参数的占位符,相当于jdbc的? -->

<select id="queryUserById" parameterType="int" resultType="com.test.pojo.User">
select * from user where id = #{id}
</select>
</mapper>

测试类:

@Test
public void testQueryUserById() throws IOException {
// 2.需要创建sessionFactory对象,则需要new一个SessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// 3.new一个builder对象
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");// 5.利用ibatis.io包下的方法
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);// 4.需要一个InputStreat对象
// 1.测试程序的目的是获得session,需要从sessionFactory里获得一个session
SqlSession openSession = sqlSessionFactory.openSession();

// do something
UserMapper userMapper = openSession.getMapper(UserMapper.class);
User user = userMapper.queryUserById(1);
System.out.println(user);

openSession.close();
}

Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象;

Mapper接口开发需要遵循以下规范:
1、 Mapper.xml文件中的namespace与mapper接口的类路径相同。
2、 Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
4、 Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MyBatis 动态代理