mybatis 学习

1 什么是ORM?

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.

ORM的方法论基于三个核心原则:
· 简单:以最基本的形式建模数据。
· 传达性:数据库结构被任何人都能理解的语言文档化。
· 精确性:基于数据模型创建正确标准化了的结构。

优缺点:

ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射。

ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。

 在对对象做持久化时,ORM一般会持久化所有的属性,影响效率。

不能写复杂的sql。

2 Myatis相对于JDBC优势在哪里?

MyBatis是一个支持普通SQL查询存储过程高级映射的优秀持久层框架。

Mybatis是JDBC的封装

(1) 能够对结果集进行映射

(2)生成动态SQL语句

(3)SQL统一管理,对数据库进行存取操作

(4)mybatis 提供了一级和二级缓存,提高了程序性能。

(5) mybatis提供插件自动生成DAO层代码,提高编码效率和准确性。

mybatis哪些场景适合使用

对关系数据模型要求不高的软件开发

4 Mybatis与Hibernate区别是什么

 

mybatis:入门简单,程序容易上手开发,节省开发成本 。mybatis需要程序员自己编写sql语句,是一个不完全 的ORM框架,对sql修改和优化非常容易实现 。

 

mybatis适合开发需求变更频繁的系统,比如:互联网项目。

 

hibernate:入门门槛高,如果用hibernate写出高性能的程序不容易实现。hibernate不用写sql语句,是一个 ORM框架。

 

hibernate适合需求固定,对象数据模型稳定,中小型项目,比如:企业OA系统

5 Dao的实现原理是什么?Dao中的方法可以重载吗?

Dao接口里的方法,是不能重载的,因为是全限名+方法名的保存和寻找策略。
Dao接口的工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Dao接口生成代理proxy对象,代理对象proxy会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回。
6  Mybatis能返回插入数据的主键吗?

1. 数据库(如MySQL,SQLServer)支持auto-generated key field的情况

<insert id="add" parameterType="EStudent" useGeneratedKeys="true" keyProperty="id">
insert into TStudent(name, age) values(#{name}, #{age})
</insert>
2

<insert id="add" parameterType="EStudent">
// 下面是SQLServer获取最近一次插入记录的主键值的方式
<selectKey resultType="_long" keyProperty="id" order="AFTER">
select @@IDENTITY as id
</selectKey>
insert into TStudent(name, age) values(#{name}, #{age})
</insert>

selectKey子元素 详解                            

  作用:在insert元素和update元素中插入查询语句。

  其属性如下:

     keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中

     resultType ,keyPropety所指向的属性类全限定类名或类型别名

     order属性 ,取值范围BEFORE|AFTER,指定是在insert语句前还是后执行selectKey操作

     statementType ,取值范围STATEMENT,PREPARED(默认值),CALLABLE

 

 

 

posted @ 2020-05-31 13:09  Angelabiubiu  阅读(117)  评论(0编辑  收藏  举报