1 Mybatis是什么(理解)
(1)mybatis : 一个基于Java的持久层框架
(2)持久层 : 操作数据库那层代码
(项目分层:界面层(jsp/controller) 业务层(service层) 持久层(数据层 dao层))
持久层框架 : jdbc , springjdbc jpa springdatajpa , mybatis
(3) 框架:
a) 每个框架为了解决某一个领域问题产生
b)框架还是一个半成品, 已经完成一部分功能 ,只需要在上面进行开发 --提高开发效率
c) 可以让我们很多人写的代码 都按照一定规则去写–可读性 维护性
(4)持久化概念:
把内存里面数据 保存到数据库中 --过程就叫持久化
(5)mybatis 它是一个持久层框架,同时又是ORM的框架
ORM: 对象关系映射 --jpa/springdatajpa
2 Mybatis的特点(理解)
(1)MyBatis 是一个支持普通 SQL查询,存储过程(数据库mysql/oracle)和高级映射的优秀持久层框架。
(2)MyBatis ****消除了几乎所有的JDBC代码和手工设置参数以及结果集的检索****。
jdbc:
a) 贾琏欲执事 – 不需要做
b) 手工设置参数(传参) – 不需要做
insert into xxx (name,age) values(?,?)
c) 结果集 ResultSet(返回值) – 不需要做
(3)MyBatis 使用简单的 ****XML*或 注解 用于配置和原始映射,将接口和 Java 的*POJOs****(Plain Old Java Objects,普通的 Java对象 Employee/User/Entity/Domain)映射成数据库中的记录。 SQL映射方式
xxxMapper.xml 文件(crud sql语句)
面试题 : Jpa缓存
jpa 一级缓存 和二级缓存 是什么?
jpa 一级缓存: 属于entityManager级别缓存,jpa自带的,不用做任何配置, 命中条件
同一个entityManageFactory ,同一个EntityManager 同一个OID
二级缓存: 属于entityManagerFactory级别缓存,不是自带 ,需要做相应配置才行
命中条件
同一个entityManageFactory ,不同一个EntityManager 同一个OID
面试题 : jdbc和mybatis优缺点?
jdbc和mybatis优缺点?
(1)jdbc操作步骤比较繁琐,比较执行贾琏欲执事 而mybatis不用 消除这个代码
(2)jdbc需要自己手动设置 参数 以及处理返回结果集 --而mybatis 不需要
(3)mybatis 可以采用 xml 和 注解 来写sql …jdbc 把sql 写到代码里面, 可以提高维护性
(4)jdbc 它是操作数据库最底层的代码,mybatis也是从jdbc上面封装出来框架 mybatis支持缓存
3 使用Mybatis(掌握)
(1) 创建项目 导入jar包
a)创建一个普通项目 , 创建一个文件夹lib (jar包)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MQ1hOEN6-1577282259693)(笔记.assets/image-20191225102827492.png)]
b)数据库创建一个表 Product
c)创建结构
cn.itsource.mybatis.domain
cn.itsource.mybatis.dao
cn.itsource.mybatis.service
(2) 做相应的配置
Mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 开发环境-->
<environments default="development">
<!--
一个环境 id:为这个环境取唯一一个id名称
-->
<environment id="development">
<!--
事务管理 type:JDBC(支持事务)/MANAGED(什么都不做)
mysql: innodb MyISAM
-->
<transactionManager type="JDBC" />
<!-- 数据源, 连接池 type(POOLED):MyBatis自带的连接池 -->
<dataSource type="POOLED">
<!-- 连接数据库的参数 四大金刚 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///mybatis" />