一 Mybatis概述&与Hibernate的区别&CRUD

Mybatis是类似Hibernate的ORM持久层框架

为什么学习Mybatis?

1 是目前国内主流的持久层框架,面向sql(相较于Hibernate,Mybatis一定要用sql)

2 Hibernate学习门槛不低,要精通门槛更高(在于如何设计O/R映射,性能和对象模型之间取得平衡,怎样用好Hibernate缓存与数据加载策略)

3 sql优化方面,Hibernate的查询会将表中的所有字段查询出来,会有性能消耗。如果自己写sql语句进行查询,则破坏了Hibernate开发的简洁性。

如果有个查询要关联多张表,比如5张表,10张表,而我们只取其中几张表的部分字段,这时用Hibernate就会显得非常力不从心,后续维护也令人发狂。

JDBC存在的问题

1 频繁的创建和打开,关闭数据库,太消耗资源

2 sql语句存在硬编码,不利于维护

3 sql参数设置硬编码,不利于维护

4 结果集获取与遍历复杂,存在硬编码,不利于维护,期望能够查询后返回一个java对象

Mybatis介绍:

Mybatis本是Apache的一个开源项目iBatis.是面向sql的持久层框架,对jdbc进行了封装。

开发中,可以只专注于sql语句本身的拼装,其他复杂过程交给MyBatis完成

MyBatis入门:

  • 根据用户ID查询用户信息
  • 根据用户名查找用户列表
  • 添加用户
  • 修改用户
  • 删除用户

工程搭建:

  1. 导入依赖jar包
  2. 配置SqlMapConfig.xml
  3. 配置log4j.properties
  4. pojo
  5. 配置sql查询映射文件
  6. 加载映射文件

包结构:config为Source文件,与src相同

导入依赖jar包

配置SqlMapConfig.xml映射文件,映射加载:项目名/文件名 , 默认在config文件下,mybatis包下加载

配置log4j.properties,输出到控制台

pojo:与Hibernate的domain相同,提供属性的getset方法

配置sql查询映射文件  user.xml , namesapce:命名空间, select  id   等  见下图

根据用户ID查询用户信息:

  1. 编写sql语句
  2. 配置关系映射
  3. 单元测试

根据用户名查找用户列表

  1. 编写sql语句
  2. 配置关系映射
  3. 单元测试

方式一:手动在sql语句里面设置查询,#{name}

方式二:直接在user.xml中设置,${}是字符串拼接指令,如果入参为普通数据类型,括号内只能写value

一:

映射:

单元测试:

二:${}是字符串拼接指令,如果入参为普通数据类型,括号内只能写value

单元测试:

添加用户

映射:

单元测试:如果不想手动提交事务,设置openSession(true)

原文地址:https://www.cnblogs.com/ltfxy/p/10398634.html

时间: 2024-08-04 10:12:59

一 Mybatis概述&与Hibernate的区别&CRUD的相关文章

mybatis与hibernate的区别持久层对比【面试题】

Mybatis技术特点: 好处: 通过直接编写SQL语句,可以直接对SQL进行性能的优化: 学习门槛低,学习成本低.只要有SQL基础,就可以学习mybatis,而且很容易上手: 由于直接编写SQL语句,所以灵活多变,代码维护性更好. 缺点: 不能支持数据库无关性,即数据库发生变更,要写多套代码进行支持,移植性不好. Mysql:limit Oracle:rownum 需要编写结果映射. Hibernate技术特点: 好处: 标准的orm框架,程序员不需要编写SQL语句. 具有良好的数据库无关性,

mybatis与hibernate的区别

本文转载自:http://blog.csdn.net/wangpeng047/article/details/17038659 以前没怎么用过mybatis,只知道与hibernate一样是个orm数据库框架.随着使用熟练度的增加,发现它与hibernate区别是非常大的,结合至今为止的经验,总结出以下几点: 1. hibernate是全自动,而mybatis是半自动. hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql

MyBatis和Hibernate的区别

MyIbatis和Hibernate的区别 1.MyBatis 真正实现了java代码和sql的分离 2.Hibernate 是全自动的,MyBatis是半自动的 Hibernate实现了部分自动生成SQL 3.SQL优化上 MyBatis 强于 Hibernate 1---MyBatis优化维护方便 SQL全存在于XML中 不需要修改源代码2---开发效率上 Hibernate略强于mybatiss 3---从性能上说 因为Mybatis全都是自己手写的SQL 因此性能相对较高 反之 Hibe

MyBatis框架与Hibernate 框架的区别,SpringMVC和MyBatis区别:

MyBatis框架与Hibernate 框架的区别 Hibernate 框架 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,建立对象与数据库表的映射.是一个全自动的.完全面向对象的持久层框架. Mybatis框架 Mybatis是一个开源对象关系映射框架,原名:ibatis,2010年由谷歌接管以后更名.是一个半自动化的持久层框架. 两者区别 开发方面 在项目开发过程当中,就速度而言:  - hibernate开发中,sql语句已经被封装,直接可以

Hibernate对象的CRUD操作

1.  Hibernate对象的CRUD操作 1.1.  对象的三种状态 瞬时(Transient) - 由new操作符创建,且尚未与HibernateSession 关联的对象被认定为瞬时(Transient)的.瞬时(Transient)对象不会被持久化到数据库中,也不会被赋予持久化标识(identifier).如果瞬时(Transient)对象在程序中没有被引用,它会被垃圾回收器(garbage collector)销毁.使用Hibernate Session可以将其变为持久(Persis

Hibernate关联关系的CRUD

本文以Group和User(一对多.多对一)双向关联为例,介绍关联关系的CRUD   下面先介绍两个属性 cascade:只影响CRUD中的CUD,即存储(save).更新(update).删除(delete) fetch:只影响CRUD中的R,即读取(get.load)   cascade(级联): 此属性仅仅帮助我们简化编程,不是必选项 如果A和B为单向关联,则在主导方设置cascade属性 如果A和B为双向关联,则在双方都要设置cascade属性 如果两个对象之间有关联关系,比如User和

IBatis 2.x 和 MyBatis 3.0.x 的区别(从 iBatis 到 MyBatis)

从 iBatis 到 MyBatis,你准备好了吗? 对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate.JPA 这样的一站式对象 / 关系映射(O/R Mapping)解决方案盛行之前,iBaits 基本是持久层框架的不二选择.即使在持久层框架层出不穷的今天,iBatis 凭借着易学易用.轻巧灵活等特点,也仍然拥有一席之地.尤其对于擅长 SQL 的开发人员来说,iBatis 对 SQL 和存储过程的直接支持能够让他们在获得 iBati

zbb20180827 Mybatis中#{}和${}有什么区别?

1.Mybatis中#{}和${}有什么区别? (1) #{} 和 ${} 在预编译中的处理是不一样的.#{} 在预处理时,会把参数部分用一个占位符 ? 代替,而${}直接已字符串代替 例如: select * from tablename where name=#{name} 预编译的时候处理成 select * from tablename where name=? 而 select * from tablename where name=${name} 会在预编译中处理成 select *

MyBatis中selectByExample和selectByExampleWithBLOBs区别

MyBatis中selectByExample和selectByExampleWithBLOBs区别 先贴一段自动生成的Mapper代码 <select id="selectByExample" parameterType="com.pojo.TbItemParamExample" resultMap="BaseResultMap"> <select id="selectByExampleWithBLOBs"