jdbc
Connection
PreparedStatement
ResultSet
dao
data access object
数据访问对象
maven配置文件
groupId
artifactId
SqlMapConfig.xml
mybatis的主配置文件
最上面是规范
<configuration>
<!--配置环境-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT"></property>
<property name="username" value="root"></property>
<property name="password" value="password"></property>
</dataSource>
</environment>
</environments>
<!--引入配置文件-->
<mappers>
<!-- <mapper class="cn.itcast.dao.AccountDao"></mapper>-->
<package name="cn.itcast.dao"></package>
</mappers>
</configuration>
Test测试方法
//加载mybatis配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//创建sqlsessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建sqlsession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取代理对象
AccountDao accountDao = sqlSession.getMapper(AccountDao.class);
注解和xml
指定配置文件的位置,映射配置文件指的是每个dao独立的配置文件
如果用注解来配置的话,此处应该使用class属性指定被注解的dao全限定类名
mybatis的设计模式
创建工厂,mybatis使用了构建者模式
builder就是构建者
把对象创建的细节隐藏,使用者直接调用方法即可拿到对象
生产sqlsession使用工厂模式
优势:解耦
代理模式getMapper
使用Dao接口实现类
不改变源码的基础上,对已有方法增强
自定义mybatis分析
生成代理对象
我们为什么配置这些属性就能让spring帮我们代理呢。
也就是上图的三个属性,类加载器,代理对象实现的接口,代理方法
没整合的Mybatis
sqlsessionfactorybuild 通过接受配置文件文件流构建出sqlsessionfactory对象
//加载mybatis配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//创建sqlsessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
@注解
用@Before 在方法执行之前
用@After 用于在测试方法执行之后