小羊

ssm框架笔记
框架技术 是一个应用程序的半成品 提供可重用的公共结构 按一定规则组织的一组组件分析优势不用再考虑公共问题 专心在...
扫描右侧二维码阅读全文
17
2018/11

ssm框架笔记


框架技术
是一个应用程序的半成品
提供可重用的公共结构
按一定规则组织的一组组件

分析优势

不用再考虑公共问题
专心在业务实现上
结构统一 易于学习 维护

持久化是程序数据在瞬时状态和持久状态间转换的过程

ORM (Object Relational Mapping )对象关系映射
编写程序的时候 以面向对象的方式处理数据
保存数据的时候 却以关系型数据库的方式存储
ORM解决方案包括下面四个部分

在持久化对象上执行基本的增 删 改 查 操作
对持久化对象提供一种查询语言活着API
对象关系映射工具
提供与实务对象交互 执行检查 延迟加载以及其他优化功能

特点

基于SQL语法 简单易学
能了解底层封装过程
SQL语句封装在配置文件中 便于同意管理与维护 降低程序的耦合度
方便程序代码调试

使用MyBatis的开发步骤
1.下载mybatis-3.2.2jar包并导入工程
2.编写Mybatis核心配置文件(configuration.xml)
3.创建实体类-POJO
4.DAO层-SQL映射文件(mapper.xml)
5.创建测试类
读取核心配置文件mybatis-config.xml
创建SqlSessionFactory对象 读取配置文件
创建sqlSession对象
调用mapper文件进行数据操作

优点

与JDBC相比 减少了50%以上的代码量
最简单的持久化框架 小巧并简单易学
SQL代码从程序代码中彻底分离 可重用
提供XML标签 支持编写动态SQL
提供映射标签 支持对象与数据库的eORM字段映射

缺点

SQL语句编写工作量大 对开发人员有一定的要求
数据库移植性差

Mybatis专注于SQL本身 是一个足够灵活的DAO层解决方案 适用于性能要求高 
或者需求多变的互联网项目

SQLSessionFactoryBuilder

负责创建SQLSessionFactory 并提供多个build方法的重载

单例
存在于整个应用运行时 并且同时只存在一个对象实例

SQLSession
包含了执行SQL所需的所有方法
对应一次数据库会话 会话结束后必须关闭
线程级别 不能共享

在SQLSession里可以执行多次SQL语句 但一旦关闭了SQLSession就需要重新创建

非集成环境下的最佳实践
SqlSessionFactoryBuilder

用过即丢 推荐作用域范围 方法体内

SQLSessionFactory

最佳作用域范围 应用的全局作用域
生命周期与应用的生命周期相同

SQLSession

线程级
一个request请求期间

mybatis-config.xml系统核心 配置文件

configuration 配置

properties 可以配置在java属性配置文件中
setting 修改MyBatis在运行时的行为方式
typeAliases 为java类型命名一个别名
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件 
environments 环境
environment  环境变量
transactionManager 事务管理器
DataSource 数据源
mappers 映射器

parameterType
基础数据类型
int String Date等
只能传一个 通过#{参数名}即刻获取传入的值
复杂数据类型
java实体类 Map等
通过#{属性名}或者#{mapde的keyName}即刻获取传入值

resultType 直接表示返回类型
基本数据类型
复杂数据类型
resultMap 对外部resultMap的引用
应用场景、
数据库字段信息与对象属性不一致
复杂的联合查询 自由控制映射结果
二者不能同时存在 本质上都是Map数据结构

resultMap自动映射(autoMappingBehavior)的三个匹配级别
NONE
禁止自动匹配
PARTAL
自动匹配所有属性 内部嵌套除外
FULL
自动匹配所有

基于OGNL表达式

完成多条件查询等逻辑实现
用于实现动态SQL的元素主要有
if
trim
where
set
choose (when otherwise)
forreach

where
简化SQL语句中的where条件判断
智能处理and和or

trim
属性
prefix
suffix
prefixOverrides
suffoxOverrides
更灵活的除去多余关键字
替代where和set

foreach
迭代一个集合 通常用于in条件
属性
item
index
collection 必须指定
list
array
map-key
open
separator
close

Last modification:November 17th, 2018 at 05:07 pm
If you think my article is useful to you, please feel free to appreciate

One comment

  1. 天蚕土豆

    这优势不错------
    不用再开路公共问题
    专心在业务实现上
    结构统一 易于学习 维护

Leave a Comment