Mybatis笔记
数据库mybatis和hibernate
hibernate
是一个标准的ORM框架,即对象关系映射,入门门槛较高,无需写sql语句,依赖语句自定生成sql语句;
由于是对sql语句进行优化,修改比较困难;
应用场景:
适用于需求变化不多的中小型项目,比如后台管理系统、erp、orm、oa...
mybatis
专注于slq本身,需要程序员自己编写sql语句;
由于是自己编写,sql修改、优化比较方便;
是一个不完全的ORM框架,虽然是程序员自己写sql语句,但也可以实现映射:输入映射、输出映射等
应用场景:
适用于需求变化较多的项目,比如互联网项目...
总结:企业进行技术选型,应以低成本、高回报作为原则。
Mybatis框架执行过程
步骤1、
配置mybatis的全局配置文件:SqlMapConfig.xml,配置了数据源、事务等mybatis运行环境;
配置mybatis的映射文件(sql语句):mapper.xml、mapper.xml、mapper.xml...
步骤2、
通过配置文件,加载mybatis运行环境,创建SqlSessionFactory会话工厂:SqlSessionFactory,(注意)其在实际使用时按单例方式
步骤3、
通过SqlSessionFactory创建SqlSession:SqlSession是一个面向用户接口(提供操作数据库方法,发出增删改查),(注意)实现对象是线程不安全的,建议SqlSession应用场合在方法体内
步骤4、
调用SqlSession内部的方法,通过Executor执行器去操作数据库,如果需要提交事务,需要执行sqlSession的commit()方法;
(直接与mysql数据库交接的部分)使用mapper statement(底层封装对象),对操作数据库存储封装,包括sql语句,输入参数、输出结果类型
步骤5、
释放资源,关闭sqlSession
输入:
输入参数类型:Java简单类型、hashmap、pojo自定义
输出:
输出结果类型:Java简单类型、hashmap、pojo自定义
Mybatis项目结构
-mybatis_project
-src
-cn.itcast.mybatis.first
-cn.itcast.mybatis.jdbc
-config
-log4j.properties
-SqlMapConfig.xml
-JRE System Library
-Referenced Libraries
-lib
-jar包...
Mybatis开发dao的两种方法(掌握)
原始dao方法 |
①需要程序员编写dao接口和实现类 ②需要在dao实现类中注入一个SqlSessionFactory工厂 |
mapper代理开发方法 |
只需要程序员编写mapper接口,也就是dao接口 程序员在编写mapper.xml映射文件的和mapper.java需要遵循一个开发规范: ①mapper.xml中的namespace就是mapper.java的类全路径 ②mapper.xml中statement的id和mapper.java中方法一致 ③mapper.xml中statement的parameterType指定输入参数的类型和mapper.java中方法参数类型一致 ④mapper.xml中statement的resultType指定输出接口的类型和mapper.java中方法返回值类型一致 |
输入映射(掌握)
parameterType:指定输入参数类型,可以为简单类型、pojo、hashmap...
对于综合查询,建议parameterType使用包装的pojo,有利于系统的扩展
输出映射(掌握)
resultType:查询到的列名和resultType指定的pojo的属性名一致,才能映射成功;假如不一致,通过resultMap设置列名和属性名之间的对应关系(映射关系)可以完成映射
resultMap:可以通过resultMap完成一些高级映射
动态sql(掌握)
if判断(掌握)
where
foreach
sql片段(掌握)
高级(结果集)映射(了解)
1、将关联查询的列映射到一个pojo属性中,实现一对一查询
2、将关联查询的列映射到一个List<pojo>中,实现一对多查询
3、实现多对多查询
4、Mybatis延迟加载
Mybatis查询缓存
1、一级缓存
2、二级缓存(了解mybatis二级缓存使用场景)
Mybatis逆向工程