内容
活动
关注

Mybatis基础使用知识(注解)

简介: mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。最后 mybatis 框架执行sql 并将结果映射为java对象并返回。采用ORM(对象关系映射)思想解决了实体和数据库映射问题,对jdbc进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。

1、Mybatis是什么?

mybatis 是一个优秀的基于java的持久层(Dao)框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。

mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。最后 mybatis 框架执行sql 并将结果映射为java对象并返回。采用ORM(对象关系映射)思想解决了实体和数据库映射问题,对jdbc进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。

2、它解决什么问题?

  • 原始jdbc开发存在的问题:数据库连接、创建、释放频繁造成系统资源浪费从而影响系统性能.
    sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码
    查询操作时,需要手动将结果集中的数据手动封装到实体中。查询操作时,需要手动将实体的数据设置到sql语句的占位符位置
  • 应对上述问题给出的解决方案:使用数据库连接池初始化连接资源。将sql语句抽取到xml配置文件。使用反射、内省等底层技术,自动将实体与表进行属性与字段的自动映射。

3、基础配置文件

上述介绍了Mybatis,以及它诞生后所解决的问题,下面将开始熟悉mybatis。

在熟悉Mybatis前,请确保项目中要存在Mybatis的jar包哦!

configuration.xml (Mybatis核心配置文件)

该配置文件为Mybatis的核心配置文件,如果项目中不存在,那么可以自行添加上去。

  • 而自行添加xml文件时注意,Mybatis的配置文件都是有标头的

它的标头为:

<?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">

也就是在xml文件的最开头最上方添加上述标签即可。

xxxMapper.xml (Mybatis的Mapper映射文件)

该配置文件为Mybatis的Mapper映射文件,本文所说的是注解,所以该配置文件可以不创建。但若是不使用注解,那么请在该配置文件中添加上对应的sql语句

它的标头为:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper

       PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

4、注解开发

近年来,注解开发越来越流行,Mybatis也可以使用注解开发方法,这样我们就可以减少编写Mapper映射文件了。

在使用注解前,请在核心配置文件中配置好数据源,以及Mapper的扫描

总的来说,使用注解开发,其根本还是在接口,始终都要创建一个接口来实现sql语句的发送。因此,创建一个接口,每一个方法就代表着一条sql语句,在方法中填写上对应的参数(或没有)、返回类型,那么之后就全权交由注解去管理了。

在此前,需要将该接口添加上@Mapper注解以确保Mybatis认为它是一个Mapper哦!

新增(@Insert)

既然新增,那么必然就需要一个接收数值的类,而该类肯定是POJO类。而新增若是想返回条数,返回类型改成int类型就好了

然后用@Insert注解修饰该方法,并创建对应的sql语句,那么新增就完成了 注解中,sql语句的编写,依旧可以使用#{}的方式来获得参数,其对应的名称应于POJO类中一致!

更新(@Update)

修改和新增差的不是很多,该返回的类型还是一样,返回不返回用int或void就知道了。

删除(@Delete)

删除更简单了,只需要传递id即可。返回的类型用int或void都行

查询(@Select)

查询要稍微复杂点,但也复杂不到哪去。

  • 其根本还是在返回类型上,若是返回的是结果集,那么直接使用List<POJO类>来接收就好。
    若是查询一个,那么返回的类型直接用POJO类来接收。

当然,这些都是单表的操作,当涉及到多表查询时,就还需要使用@Result和@Results以及搭配@One和@Many注解使用。

注解名 说明
@Result 该注解实现了结果集的封装
@Results 可以与@Result一起使用,封装多个结果集
@One 实现一对一的结果集封装
@Many 实现一对多的结果集封装

知道这些含义就好办。

接口中的方法不变,注解也不变,添加上@Results注解,其中,该注解使用对象的方式来用最好的,也就是@Results({@Result,@Result})这样的写法。

  • 在多表查询中,每一个@Result可以理解为就是一个结果集的列,使用@Result来接收,而@Results就是一张表,它将所有的列包括住。
  • 当多表查询时,POJO类也有要求,若是当表格中有存在外键,那么POJO类中也必须拥有这个外键所对应的POJO类

@Result中的属性介绍:

  • column:数据库的列名
  • property:需要装配的属性名(POJO类的属性名)
  • one:需要使用@One的注解(@Result(one=@One)())
  • many:需要使用的@Many注解(@Result(many=@many)())

一对一表格查询

唯一的外键,在一张表中存在一个外键,那么这样配置@One注解来使用还是很简单的。

请注意,@One注解,select参数配的是方法的地址,而该方法实际上是一个单表的查询!

而如果不想用@One,直接用POJO类.属性也是没问题的。

这里的property参数,使用了直接调用。在核心配置文件中,就要配置对应POJO类的别名

一对多表格查询

当搞明白一对一后,一对多也就简单了。实际上参数没变,知识@One注解变成了@Many注解,然后接收的类型变了而已。

多对多表格查询

实际上,多对多,与一对多的查询相差无异,只是多对多的表格中多个一张中间表而已。

5、总结

当用惯了配置Mapper.xml的方式,再使用注解来进行开发,真的很舒服,无论是否可读性上,还是开发效率上都比xml的方式更好,注解也应是以后的开发主流。

Mybatis框架,其主要作用就是针对jdbc,sql之类dao层的东西进行的优化,其目的也就是为了简化开发,而使用注解后,其开发的效率进一步降低,当SSM进行了整合,Mybatis更是将控制权交由Spring管理,这样的开发,谁不喜欢呢。

目录
相关文章
|
4月前
|
SQL XML Java
MyBatis注解的运用于条件搜索实践
通过上述的实践,我们可以看出MyBatis注解不仅能够实现条件搜索的需求,还能够提供灵活而强大的SQL构造能力,极大地简化了代码的复杂度,提高了开发效率。在实际的项目开发中,结合实际的业务需求合理选择MyBatis的配置方式(注解或XML),能够让数据持久层代码变得更加清晰和易维护。
106 11
|
6月前
|
存储 Java 数据库连接
Mybatisplus中的主要使用注解
3.有些注解需要配合其他配置使用。例如,@Version需要配合乐观锁插件使用,@EnumValue需要配合对应的TypeHandler使用。
309 11
|
7月前
|
SQL XML Java
MyBatis——选择混合模式还是全注解模式?
在MyBatis开发中,Mapper接口的实现方式有两种:全注解模式和混合模式。全注解模式直接将SQL嵌入代码,适合小规模、简单逻辑项目,优点是直观简洁,但复杂查询时代码臃肿、扩展性差。混合模式采用接口+XML配置分离的方式,适合大规模、复杂查询场景,具备更高灵活性与可维护性,但学习成本较高且调试不便。根据项目需求与团队协作情况选择合适模式至关重要。
122 4
|
8月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
659 0
|
12月前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
1816 5
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
SQL 缓存 Java
MyBatis如何关闭一级缓存(分注解和xml两种方式)
MyBatis如何关闭一级缓存(分注解和xml两种方式)
454 5
|
Java 数据库连接 mybatis
Mybatis使用注解方式实现批量更新、批量新增
Mybatis使用注解方式实现批量更新、批量新增
265 3
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
SQL 存储 数据库
深入理解@TableField注解的使用-MybatisPlus教程
`@TableField`注解在MyBatis-Plus中是一个非常灵活和强大的工具,能够帮助开发者精细控制实体类与数据库表字段之间的映射关系。通过合理使用 `@TableField`注解,可以实现字段名称映射、自动填充、条件查询以及自定义类型处理等高级功能。这些功能在实际开发中,可以显著提高代码的可读性和维护性。如果需要进一步优化和管理你的MyBatis-Plus应用程
915 3
|
Java 数据库连接 mybatis
Mybatis使用注解方式实现批量更新、批量新增
Mybatis使用注解方式实现批量更新、批量新增
865 1
下一篇