一、主流的框架
Struts2 SpringMVC(控制层=》表示层)
Hibernate Mybatis(数据访问层)
Spring
二、mybatis
是一个持久化的解决方案
是一个ORM框架
持久化:数据在瞬时状态和持久状态之间的转化 持久化操作包括增、删、改、查
ORM:对象关系映射 将实体类中的属性与数据库表的字段一一对应(操作实体类相当于操作表)
三、搭建mybatis环境的步骤
1、导入mybatis架包
2、创建mybatis核心配置文件(mybatis-config.xml)
3、创建实体类-POJO
4、DAO层-接口、SQL映射文件(sql映射文件的命名空间必须是接口的完全限定吗,sql语句对应id必须是接口的方法名)
5、在核心配置文件中注册sql映射文件(重点)
<mappers>
<package name="cn.kgc.dao"/><!-- 一劳永逸 -->
</mappers>
6、测试
//1.加载核心配置文件
//2.创建SqlSessionFactory对象
//3.创建SqlSession对象
//方式一:通过SqlSession实例直接运行映射的SQL语句
//4.通过SqlSession对象的selectOne、selectList、insert、update、delete等方法执行sql映射文件中sql语句
//方式二:基于mapper接口的方式执行SQL语句(开发中使用)
//4.通过SqlSession的getMapper方法反射获取接口的实现类(相当于new 实现类)
//5.调用接口的方法
//6.处理结果
sql映射文件的注意点:<!-- 每一个mapper文件的namespace是唯一的 注:如果使用接口,namespace的值必须是接口的完全限定名 -->
<!-- 获取所有的角色 ,需要通过resultType指定返回值类型 注:如果使用接口,id必须和接口中的方法名一一对应 -->
四、mybatis三大核心对象的作用域
SqlSessionFactoryBuilder 作用域:代码块内,创建完 SqlSessionFactory对象后,将没有作用
SqlSessionFactory 产生SqlSession对象 作用域:相当于Application 全局,一个网站有一个,生命周期与应用程序的生命周期相同
SqlSession 对数据库进行增删查改;作用域:一次操作(请求)(每次用完将关闭)
五、mybatis框架的优缺点
优点
与JDBC相比,减少了50%以上的代码量
最简单的持久化框架,小巧并简单易学
SQL代码从程序代码中彻底分离,可重用
提供XML标签,支持编写动态SQL
提供映射标签,支持对象与数据库的ORM字段映射
缺点
SQL语句编写工作量大,对开发人员有一定要求
数据库移植性差
六、mybatis核心配置文件元素节点的顺序【了解】
properties
settings
typeAliases:为 Java 类型命名一个别名(简称)
typeHandlers
objectFactory
plugins
environments 环境
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
mappers 映射器
注:transactionManager元素的type可以取值为JDBC/managed
JDBC: 事务的提交/回滚由程序员自己手动完成
managed: 事务的提交/回滚由spring框架去完成。
七、配置properties元素
1、配置resource属性,引入外部文件
<properties resources="database.properties"/>
2、配置property节点
<property name="driver" value="com.mysql.jdbc.Driver"/>
……
注:resource属性值的优先级高于property子节点配置的值
八、typeAliases元素:简写冗长的Java类名
1、给指定实体类定义别名
2、给指定包下的所有实体类定义别名
<typeAliases>
<package name ="cn.smbms.pojo" />
<!--注册指定包下的所有接口-->
<package name ="cn.smbms.dao.user" />
</typeAliases>
九、Mappers元素
1、配置SQL映射文件的路径
<mapper resource="sqlmap/User.xml" />
2、配置接口的路径
<mapper class="cn.mybatis.mapper.UserMapper"/>
3.配置包名
<mappers>
<package name="cn.kgc.dao"/><!-- 一劳永逸 -->
</mappers>
注:要求接口名称和SQL映射文件名称相同,且放在同一个目录中。