MyBatis面试知识点

mybatis的地位
1、java语言学习流程:javase,javaweb,ssm
(springmvc+sping+mybatis),基于ssm的项目
,java高级,基于微服务的项目
2、mybatis:mybatis的分页插件,mybatis的逆向工程,
mybatis简介,mybatis框架搭建,mybatis基础功能
(mybatis的核心配置文件的讲解与编写,mybatis的
映射文件的讲解和编写,mybatis实现增删改查,mybatis
获取参数值的两种方式,mybatis的各种查询功能,mybatis
的自定义映射resultMap,mybatis的动态sql),mybatis
的缓存。
3、mybatis简介
mybatis历史:mybatis最初是apache的一个开源项目ibatis
2010年6月这个项目迁移到google code。代码于2013年
迁移到github。
4、mybatis特性:mybatis是支持定制化sql,存储过程以及
高级映射的优秀的持久层框架
mybatis避免了几乎所有的jdbc代码和手动设置参数以及
获取结果集
mybatis可以使用简单的xml或注解用于配置和原始映射,
将接口和java的pojo(普通的java对象)映射成数据库
中的记录
mybatis是一个半自动的orm框架
5、mybatis下载
mybatis下载地址:https://github.com/mybatis/mybatis-3
6、基本映射:字段名必须和实体类对象一致
高级映射(自定义映射)
7、和其它持久化层技术对比
jdbc:
sql夹杂在java代码中耦合度高,导致硬编码内伤
维护不易且实际开发需求中sql有变化,频繁修改的情况多见
代码冗长,开发效率低
Hibermate和jpa:
操作简便,开发效率高
程序中的长难复杂sql需要绕过框架
内部自动生产的sql,不容易做特殊化
基于全映射的全自动框架,大量字段的pojo进行部分
映射时比较困难
反射操作太多,导致数据库性能下降
mybatis:
轻量级,性能出色
sql和java编码分开,功能边界清晰。java代码专注业务,sql
语句专注数据
开发效率稍逊Hibermate,但是完全能够接受。
8、搭建mybatis
开发环境:idea 2019,构建工具:maven 3.5.4
mysql版本:mysql5.7,mybatis版本:mybatis 3.5.7
9、创建maven工程
打包方式:jar
引入依赖
10、创建mybatis的核心配置文件
习惯上命名为mybatis-config.xml这个文件名仅仅只是
建议,并非强制要求。将来整合spring之后,这个配置
文件可以省略,所以大家操作时可以直接复制,粘贴。
核心配置文件主要用于配置连接数据库的环境以及mybatis
的全局配置信息
核心配置文件存放的位置是src/main/resources目录下
11、创建mapper接口
mybatis中的mapper接口相当于以前的dao。但是区别在于,
mapper仅仅是接口,我们不需要提供实现类。
public interface UserMapper{
/**
*添加用户信息
*/
int insertUser();
}
12、创建mybatis的映射文件
相关概念:orm对象关系映射。
对象:java的实体类对象
关系:关系型数据库
映射:二者之间的对应关系
java概念       数据库概念
类        表
属性        字段/列
对象        记录/行

映射文件的命名规则:
表所对应的实体类的类名+mapper.xml
例如:表 t_user,映射的实体类为User,所对应的映射
文件为UserMapper.xml
因此一个映射文件对应一个实体类,对应一张表的操作
mybatis映射文件用于编写sql,访问以及操作表中的数据
mybatis映射文件存放的位置是src/main/resources/mappers目录下

mybatis中可以面向接口操作数据,要保证两个一致:
mapper接口的全类名和映射文件的命名空间保持一致
mapper接口中方法的方法名和映射文件中编写sql的标签的id属性保持一致

sqlsession:代表java程序和数据库之间的会话。(HttpSession是java程序和浏览器之间的会话)
sqlsessionfactory:是生产sqlsession的工厂
工厂模式:如果创建某一个对象,使用的过程基本固定,那么
我们就可以把创建这个对象的相关代码封装到一个工厂类中,以后都使用这个工厂类来生产我们需要的对象。
13、加入log4j日志功能
加入依赖
14、日志的级别
fatal(致命)>error(错误)>warn(警告)>info(信息)>debug(调式)
15、核心配置文件详解
(properties?, settings?, typeAliases?, typeHandlers?,
     objectFactory?, objectWrapperFactory?,
     reflectorFactory?, plugins?, environments?,
     databaseIdProvider?, mappers?
16、mybatis获取参数值的两种方式
mybatis获取参数值的两种方式:${}和#{}
${}的本质就是字符串拼接,#{}的本质就是占位符赋值
${}使用字符串拼接的方式拼接sql,若为字符串类型或日期
类型的字段进行赋值时,需要手动加单引号;但是#{}使用
占位符赋值的方式拼接sql,此时为字符串类型或日期类型的
字段进行赋值时,可以自动添加单引号
17、单个字面量类型的参数
若mapper接口中的方法参数为单个的字面量类型
此时可以使用${}和#{}以任意的名称获取参数的值,注意
${}需要手动加单引号
18、多个字面量类型的参数
若mapper接口中的方法参数为多个时
此时mybatis会自动将这些参数放在一个map集合中,以arg0
arg1.。。为键,以参数为值;以param1,param2.。为键,
以参数为值;因此只需要通过${}和#{}访问map集合的键就可以
获取相对应的值,注意${}需要手动加单引号
19、
     * mybatis获取参数值的两种方式:${}和#{}
     * ${}本质字符串拼接
     * #{}本质占位符赋值
     * mabatis获取参数值的各种情况:
     * 1、mapper接口方法的参数为单个的字面量类型
     * 可以通过${}和#{}以任意的名称获取参数值,但是需要注意${}的单引号问题
     *2、mapper接口方法的参数为多个时
     * 此时mybatis会将这些参数放在一个map集合中,以两种方式进行存储
     * a>以arg0,arg1...为键,以参数为值
     * b>以param1,param2..为键,以参数为值
     * 因此只需要通过#{}和${}以键的方式访问值即可,但是需要注意${}的单引号问题
     * 3、若mapper接口方法的参数有多个时,可以手动将这些参数放在一个map中存储
     * 4、mapper接口方法的参数是一个实体类类型的参数
     * 只需要通过#{}和${}以属性的方式访问属性值即可,但是需要注意${}的单引号问题
     * 5、使用@Param命名参数
     * 6、此时mybatis会将这些参数放在一个map集合中,以两种方式进行存储
     * 以@Param注解的值为键,以参数为值
     * 以param1,param2.。为键,以参数为值
     * 因此只需要通过#{}和${}为键的方式访问值即可,但是需要注意${}的单引号问题
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值