Mybatis相关知识点

传统开发模式

JDBC 操作数据库弊端:
1.SQL语句自己手写,访问不同的表代码有雷同,枯燥
2.必须操作Connection、Statement  ResultSet[为了实体封装]代码
3.SQL语句实际中很容易发生改变,代码与SQL语句耦合死
4.影响系统性能【用时创建、用后释放,Connection、Statement需要进行资源释放】
5.需要手动将查询出来的结果映射到实体中去
Mybatis相应解决措施:
1.将sql语句抽取到配置文件中
2.提供了一个SqlSesssion对象,内部封装了对JDBC的繁琐操作
3.引入数据源的概念,事先实例化数据源,初始化部分连接资源,用时去哪,用完放回
4.使用orm的思想解决了实体和数据库之间的映射关系
优点:使开发者不用关注繁杂的JDBC操作,专注于SQL代码本身

引入步骤

 导入数据库驱动
导入mybatis驱动
创建mapper 文件(约束头、namespace   resulteType)
编写核心配置文件 sqlMapConfig(核心文件约束头)
1.配置数据源环境 
2. 加载映射文件


SqlSession

概述:Mybatis中非常强大的类,里面有所有执行语句、提交回滚事务、获取映射器实例的方法
执行SqlSession的对象,内部封装了JDBC的繁琐操作
1.根据Resources对象获取核心配置文件
new SqlSessionFactoryBuilder().build(resourceAsStream )
2获取SqlSessionFactory对象,根据其获取SqlSession对象【执行sql语句的对象】
SqlSession对象是数据库操作的核心对象,也需要进行资源释放
Mybatis默认是事务不提交的,对表有影响操作需要用到事务
// mybatis 提交事务方法
sqlSession.commit()
sqlSession.close()
注:也可以创建一可以进行自动提交事务的sqlSession对象

SqlMapConfig重点配置

properties属性:加载外部properties文件
typeAliases:设置类型别名,设置后可以直接使用类的大小写替代全类名,可以通过包扫描的方式,将一个包下的所有类都配成实例
environments 重点
mappers 中 包含mapper,加载映射配置
   mapper 加载方式有如下几种
   1.使用相对于类路径的资源引用
   2.url
   3.映射器接口实现类的完全限定类名
   4. 包内的类  
plugins 重点
Properties标签:
数据源的相关配置信息单独抽取成一个properties文件

约束头作用

1.约束标签内容
2. 起提示作用

别名

Integer ——》可以使用int代替
int  可以使用_int进行替代 

动态SQL

根据相关条件进行查询时,标签体内为空,执行相关代码
套在if外面  相当与where 1 = 1;


where 子标签有if 和forEach

一对一,一对多,多对一的解决方案

MyBatis中在mapper配置文件中,将sql语句的返回值改为resultMap,并在Mapper中配置resultMap,注意Mybatis对常见的数据类型提供了映射,注意其大小写问题
resultMapd相关子标签
《association》 子标签 表示1
《collection》 表示多
 

你可能感兴趣的:(mybatis,java,数据库)