备战秋招之MyBatis专题

一:概述

1.1为什么用MyBatis?

JDBC一个简单的查找流程:

(1)加载JDBC驱动
(2)获得一个连接(URL,USER,PASSWORD)
(3)创建一个查询
(4)将resultSet转换为Bean
(5)关闭连接
preStateMent防止SQL注入,后续速度会快点,预加载
写操作比读操作多一个事务的操作 需要提交事务
使用ORM框架可以避免每次操作数据库都繁杂的干这几步,将技术代码与业务代码分离,将注意力集中在业务代码,连接资源的开启关闭也不需要自己去烦恼(数据库连接池是很有限的)。

1.2ORM是什么

数据库表与java对象的一个映射,面向对象去操作数据库,因为数据库是关系型的,不是对象。

二:MyBatis使用流程

(1)添加MyBatis依赖jar包
(2)编写配置文件
(3)开发业务代码


image.png

四大对象:

SqlSessionFactoryBuilder::读取配置信息创建SqlSessionFactory,建造者模式,方法级别生命周期;

SqlSessionFactory:创建Sqlsession,工厂单例模式,存在于程序的整个生命周期;
SqlSession:代表一次数据库连接,可以直接发送SQL执行,也可以通过调用Mapper访问数据库;线程不安全,要保证线程独享(方法级);
SQL Mapper:由一个Java接口和XML文件组成,包含了要执行的SQL语句和结果集映射规则。方法级别生命周期;

三:maybatis的配置(见pdf1概念与进阶)

四:mapper的配置(见pdf1概念与进阶)

resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。

五:select元素

自动映射
前提:SQL列名和JavaBean的属性是一致的;
自动映射等级autoMappingBehavior设置为PARTIAL,需要谨慎使用FULL;
使用resultType; 如果列名和JavaBean不一致,但列名符合单词下划线分割,Java是驼峰命名法,
则mapUnderscoreToCamelCase可设置为true;
传递多个查询入参
 使用map传递参数;可读性差,导致可维护性和可扩展性差,杜绝使用;
 使用注解传递参数;直观明了,当参数较少一般小于5个的时候,建议使用;
 使用Java Bean的方式传递参数;当参数大于5个的时候,建议使用;

六:resultMap元素(尽量使用这个,别用自动映射)

resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,在对复杂语句进行联合映射的时候,它很可能可以代替数千行的同等功能的代码。
ResultMap 的设计思想是,简单的语句不需要明确的结果映射,而复杂一点的语句只需要描述它们的关系就行了。

七:SQL元素与参数

预编译 #{}:将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号,能够很大程度防止
sql注入;
传值 ${}:传入的数据直接显示生成在sql中,无法防止sql注入;

八:动态SQL(用到再说)

image.png

你可能感兴趣的:(备战秋招之MyBatis专题)