MyBatis 学习记录02--07/11--接口式编程
一、 原理
1. 接口的作用:
1)规范了参数类型
2)返回值
3)抽象化:dao层规范与实现层的分离,可以用mybatis或者hibernate等多种实现
2. 接口中的方法:
只用写方法体,根据提供的id,查询Employee数据,并封装成Employee对象
3. sql映射配置文件的作用:
根据sql语句,功能同接口中的方法是一样的
因此:接口与xml文件进行动态绑定
此时,mybatis会为Interface自动创建一个代理对象,来进行后续的增删改查(回答了为何Interface不需要实现类的问题;查询代理对象可以通过XXX.getClass()这个方法获取)
4. 如何实现接口与xml文件绑定:
1)namespace改为接口全类名 —与接口绑定成功
2)select标签中的id改为Interface方法中的方法名—与接口中的特定方法进行绑定
二、 修改
1)new — Interface
包名:com.atguigu.mybatis.dao
名:EmployeeMapper.java
在其中要规定一个方法(不用写实现类):根据提供的id,查询Employee数据,并封装成Employee对象
2)sql映射配置文件
3)MyBatisTest.java测试文件
- 抽取“获得sqlSessionFactory”的方法:因为经常要使用
getMapper中的参数:接口的实现对象名
mapper.getRmById:调用接口的具体方法
三、总结
1. 接口式编程:
原生方式: Dao ===> Dao实现类
MyBatis: Mapper ===> XXMapper.xml
2.SqlSession:
代表和数据库的一次对话,用之后关闭
3. 非线程安全:
SqlSession与connection一样,都是非线程安全的。
private SqlSession sqlsession; — X
这样写在多线程环境下会产生资源竞争
每次使用都应获取新的对象
4. 代理对象:
将接口与xml文件进行动态绑定
mapper接口没有实现类,但mybatis会为接口生成代理对象
EmployeeMapper empMapper = sqlSession.getMapper(EmployeeMapper.class);
5. 2个重要的xml文件:
1)全局配置文件mybatis-config.xml:(可以没有)
数据库的连接池信息
事务管理器信息
系统运行环境信息
2)sql映射文件EmployeeMapper.xml:(必须有!!!)
每一个sql语句的映射信息,将sql抽取出来