Mybatis

简介: Mybatis

Mybatis概述:


  • Myba是一款优秀的持久层框架
  • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程,减少了代码的冗余,减少程序员的操作。


持久化

即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。

JDBC就是一种持久化机制。文件IO也是一种持久化机制。


为什么需要持久化服务?


     内存断点后数据会丢失,但是有些业务不允许这种情况的存在


     比起硬盘,内存过于昂贵,如果有够量的内存,则不需要持久化服务,但是正是因为内存太贵,储存有限,因此需要持久化来缓存


Mybatis的作用


Mybatis帮助程序员将数据存取到数据库里面。


传统的jdbc操作 , 有很多重复代码块 .比如 : 数据取出时的封装 , 数据库的建立连接等等… , 通过框架可以减少重复代码,提高开发效率 .


MyBatis的优点

简单易学:本身就很小且简单。

灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。


Mybatis操作数据库的具体实现步骤如下:


  1. 创建一个数据库表。
  2. 创建一个Maven项目,并在pom.xml文件中配置相关依赖。
  3. 创建Mybatis的核心配置文件(mybatis-config.xml),配置数据库连接信息和映射文件路径等。
  4. 创建与数据库表对应的实体类,用于封装数据库表中的数据。
  5. 创建数据操作持久层接口,定义数据库操作的方法。
  6. 创建数据操作持久层接口的实现类,并在实现类中编写SQL语句。
  7. 创建测试类,测试数据库操作的功能。


Mybatis知识


1.从数据库查询数据时,若返回字段在java实体类中没有该属性,则可以返回map集合

例如:Map<String,Object>

若返回数据为多行数据时,可以使用List<Map<String,Object>>或者加上@Mapkey注解,以一个字段名为大的键,例:@Mapkey("id") {1={uname="hahah",id=1},2={uname="wowowo",id=2}}


2.模糊查询时,like ?

最优: select * from users where uname like "%"#{uname}"%"   ("%")双引号

或者:like '%${uname}%' (字符串拼接 )   或者 like concat ('%' ,#{uname}, '%')


3.使用级联处理多对一的映射关系

多表查询时,返回数据之间具有一对多的关系

例:班级和学生之间一对多 可以在 学生实体类 中添加  班级属性

在ResultMap中绑定 colum="class_id"  property="class.classId"


4.一对多查询数据时 在一的实体类中加入  集合属性

1.在ResultMap中使用<collection>标签 property绑定集合属性  ofType="Student"(集合中的类型)

2.  <collection property="students"     ofType="student">

           <result column="studentName"     property="studentName"/>

           <result column="studentAge"         property="studentAge"/>

           <result column="classId"             property="classId"/>

       </collection>


5.分步查询数据

1.写两个查询sql

2.给两个sql绑定联系:

fetchType加载形式:eager(直接加载)  lazy(懒加载)

select: 用来设置分步查询的唯一标识(绑定到第二个查询sql)

column:查询的条件 两表之间的关系

 <collection property="students" fetchType="eager"

                   select="com.shutu.Mapper.StudentMapper.getClassAndStudentStepTwo"

                   column="classId"/>


目录
相关文章
|
11天前
|
SQL 缓存 Java
Mybatis汇总
Mybatis汇总
18 1
|
1月前
|
SQL 缓存 Java
MyBatis系列
MyBatis系列
|
4月前
|
Java 关系型数据库 MySQL
MyBatis-Plus详解(1)
MyBatis-Plus详解(1)
51 0
|
XML Java 数据库连接
MyBatis-Plus
MyBatis-Plus
56 0
|
SQL XML 缓存
了解mybatis
了解mybatis
64 0
|
SQL XML 存储
Mybatis总结
Mybatis总结
107 0
|
XML SQL Java
Mybatis使用问题汇总
JDK1.8分组问题产生的SQL需求
98 0
|
SQL 算法 druid