mybatis 封装jdbc访问代码的一个框架 (hibernate) ORM对象关系映射
SpringMVC:用来封装servlet的框架 (struts)
Spring:体系整合框架,其他框架的粘合剂
框架:整个或者部分系统的可重用设计,
优点:1、灵活可配置:将写死的代码放到配置文件中
2、复用性高:将反复使用的代码抽取封装
3、对底层细节进行封装,提供了方便调用的api
主要内容:
1 mybatis 介绍
2 入门 :使用jdbc操作数据库存在的问题
Mybatis的架构
Mybatis的入门程序
3 Dao的开发
原始dao的开发
动态代理方式
4 SqlMapConfig.xml文件说明
一。介绍
持久层框架,对jdbc的操作进行封装,只需关注sql本身,不用处理加载驱动、创建连接、创建语句等过程
通过xml过着注解的方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,并且通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后油mybatis框架执行sql语句,并将结果映射成java对象并且返回。
二、
2.1使用jdbc的问题总结:
导入jar
创建工程
步骤:
1、加载驱动
2、获取连接
3、创建语句对象
4、设置sql语句
5、设置sql参数(preparedStatement)
6、执行sql
7、关闭资源
缺点:资源浪费、硬编码不容易维护、preparedStatement占位符不移维护、结果集的解析硬编码
实例:
1、配置数据库jdbc
2、配置mybatis的配置文件
3、创建entity类 User
4、为User配置user。xml文件
其中的id使用#{id} or #{value}
5、测试数据库连接和数据获取
控制台提示logger 需要打印日志
Mybatis的增删改查
模糊查询:
在运行的java类中调用 session.selectList方法获取 List<User>
添加对象:
使用标签实现插入数据后返回主键的值 主键回填
修改记录:
session.udpate commit
删除用户:
session.delete
Mybatis 工作原理以及流程:
优点:
1 节省资源
2 sql语句在xml文件中和java‘代码分离
3 将对象自动映射到sql语句 通过parameterType定义输入参数类型
4 将sql执行结果映射到java对象 通过stateme 的resultType定义输出结果的类型
使用反射机制
mybatis两种方式:
1.原始的dao方法
2.使用mapper代理进行开发
(1)namespace和Dao接口的名称保持一致(原本是实体类的名称)
代理实现类的流程
总结:mybatis是基于动态代理实现的,cglib.jar
原始Dao开发中的问题:
重复代码 SQLSession
不存在硬编码问题(方法和id之类的东西)
使用mapper代理,不需要创建DaoImpl就可以实现
mapper动态代理的开发规范:
只需要编写mapper接口(Dao 接口)
1、mapper.xml文件中的namespace与mapper接口的类路径相同
2、mapper接口方法名和mapper.xml文件中的每个sql的id
3、parameterType
4、resultType
mapper.xml映射文件:
内容同user.xml文件 修改namespace的值为UserMapper接口路径,并将UserMapper.xml文件放大classpath下的mapper目录
当mapper文件特别多的时候 可以再mybatis的配置文件中批量扫描
mybatis配置文件中的其他属性
别名标签
别名默认使用类名的小写
简单类型 支持自动别名