我是靠谱客的博主 粗心小猫咪,最近开发中收集的这篇文章主要介绍他来了!mybatis框架使用详解及SpringBoot集成教程Mybatis框架是什么?Mybatis框架的作用?Mybatis框架什么时候使用?Mybatis框架怎么使用?扩展:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  哈喽,every巴得!老生常谈,学习新东西的灵魂四问---是什么?能干什么?什么时候用?怎么用?下面都是通过这四问来诠释mybatis,如有不详或不准确的地方也希望各位员兄弟在评论区指出,暂谢!

Mybatis框架是什么?

        要了解mybatis框架是什么首先就得知道ORM是什么,ORM(Object Relational Mapping):对象关系映射 指的是持久化数据和实体对象的映射模式,为了解决面向对象与关系型数据库存在的互不匹配的现象的技术,接下来再聊mybatis,首先附上人家的官网:http://www.mybatis.org/mybatis-3/

     

        MyBatis 基于Java 的一个 半自动化的持久层框架(SQL语句还得自己写) 它内部 封装了 JDBC使开发者只需要关注 SQL 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建执行者等复杂的操作。 MyBatis是 通过 xml 或注解的方式 将要执行的各种 Statement 配置起来,并 通过 Java 对象和 Statement 中SQL 的动态参数进行映射生成最终要执行的 SQL 语句 最后 MyBatis 框架执行完 SQL 并 将结果映射为 Java 对象并返回 采用 ORM 思想 解决了实体和数据库映射的问题
 

Mybatis框架的作用?

       其实核心就是概念中的一句话:解决实体和数据库映射的问题,解决原始jdbc操作存在的问题。

先看一眼原始jdbc的操作:

再了解一下mybatis的优缺点:

     优点:  1.基于SQL编程,简单容易。2.消除了JDBC大量冗余的代码,不需要手动开关连接。3.很好的与各种数据库兼容开发人员不需要考虑数据库的差异性。4.提供了很多第三方插件(分页插件 / 逆向工程)。5.SQL写在XML里,从程序代码中彻底分离,解除sql与程序代码的耦合,便于统一管理和优化,并可重用。6.提供XML标签,支持编写动态SQL语句。7.提供映射标签,支持对象与数据库的ORM字段关系映射。8.能够与Spring很好的集成

     缺点:1.SQL语句编写工作量大,对开发人员有一定要求。2.数据库移植性差
 

Mybatis框架什么时候使用?

      在持久层(和数据库直接打交道)中,当需要在操作数据库表并进行对象封装返回时使用。适用于性能要求较高或者需求多变的互联网项目。

Mybatis框架怎么使用?

      重头戏来了!接下来篇幅较长,请各位看官搬好小板凳,切好茶,慢慢看~

最基本的快速入门案例

1.数据库的数据准备

2.导入所需jar包

注:无论是原始方式还是用maven导坐标都要注意jar包版本的兼容和统一

3. 在 src 下创建映射配置文件
         
注:1.使用mybatis框架时dao层或mapper层只用写接口就行,不用写实现类,由 MyBatis 框架根据接口的定义来创建该接口的动态代理对象
       2. 映射配置文件中的名称空间(namespace)必须和 Dao 层接口的全类名相同
       3.映射配置文件中的增删改查标签(select,delete,update,insert)的 id 属性必须和 Dao 层接口的方法名相同
       4.映射配置文件中的增删改查标签的 parameterType 属性必须和 Dao 层接口方法的参数类型相同
       5. 映射配置文件中的增删改查标签的 resultType 属性必须和 Dao 层接口方法的返回值类型相同,也要写全类名,如果核心配置文件配置了别名就用别名即可
       6.返回值是个集合类型的。resultType属性只写其泛型的全类名(如Dao 层接口返回值为List<Student>,resultType的写法如上图一样)
       7.当实体类中的属性与表中字段名不一致时要用resultMap属性映射代替resultType
       8.使用#{属性名}获取到参数值,如:id由mapper的参数带来
           
4.  在 src 下创建核心配置文件(MyBatisConfig.xml)
     
注:1.核心配置文件包含了 MyBatis 最核心的设置和属性信息。如数据库的连接、事务、连接池信息等 
       2.<properties>:引入数据库连接配置文件标签。resource:数据库连接配置文件路径。获取数据库连接参数    ${键名}
 
          
        3.<typeAliases>:为全类名起别名的父标签。<typeAlias>:为全类名起别名的子标签。属性:type:指定全类名。alias:指定别名。<package>:为指定包下所有类起别名的子标签。(别名就是类名)
         
       4.log4j的配置: 在日常开发过程中,排查问题时难免需要输出 MyBatis 真正执行的 SQL 语句、参数、结果等信息,我们就 可以借助 LOG4J 的功能来实现执行信息的输出。
      
 
       5.常用标签:
        
5. 编写测试类完成相关 API 的使用

注:1.Resources:加载资源的工具类。

       

       2.SqlSessionFactoryBuilder :获取 SqlSessionFactory 工厂对象的功能类。
        
       3.SqlSessionFactory :获取 SqlSession 构建者对象的工厂接口。 指定事务的提交方式。
    
       4.SqlSession :构建者对象接口。 执行 SQL。 管理事务。 接口代理。
      
总的流程图解:
 

使用注解开发

简而言之,就是不用映射配置文件,直接在mapper方法上使用注解进行编写SQL,要修改的地方就是去掉映射配置文件,在核心配置类中加上包扫描映射

使用SpringBoot整合mybatis

1.创建一个基本的Spring Boot工程

2.添加Web依赖,MyBatis依赖以及MySQL驱动依赖

3.在application.yml或application.properties配置文件中 编写DataSource和MyBatis相关配置

4.编写dao和mapperxml文件/纯注解开发

dao+xml文件

注:1.xml文件放在resources目录下,创建一个mapper目录用来放mapper的xml文件.再在配置文件中加上mybatis.mapper-locations=classpath:mapper/*.xml,告诉mybatis去哪里扫描mapper

       2.最好在mapper层类上都加上@mapper注解,然后再启动类上加上@MapperScan(basePackages="mapper所在包名"),这样就不怕漏扫描到

dao+纯注解

注:@Select、@Insert、@Update以及@Delete四个注解分别对应XML中的select、insert、update以及delete标签,@Results注解类似于XML中的ResultMap映射文件(getUserById方法给查询结果的字段取别名主要是向小伙伴们演示下@Results注解的用法),另外使用@SelectKey注解可以实现主键回填的功能,即当数据插入成功后,插入成功的数据id会赋值到user对象的id属性上

5.不管配置中有没有配一般启动类上加扫描注解

mybatis最基本的介绍和使用到这里也就差不多了,但是真正使用的场景可不止配置入门这么简单,下面再扩展一下,动态SQL,分页插件的使用等,mybatis还可以使用功能类构建sql语句,多表操作等在这里就不多做赘述了,感谢各位员兄弟看到这里。。。。。。

扩展:

一,动态sql

动态sql是什么?

         MyBatis 映射配置文件中,前面我们的 SQL 都是比较简单的,有些时候业务逻辑复杂时,我们的 SQL 就是动态变化的。 根据不同的条件,最终生成的sql语句要不一样;
其就是通过  if, choose, when, otherwise, trim, where, set, foreach标签,可组合成非常灵活的SQL语句,从而提高开发人员的效率
 

为什么要学习动态sql(什么时候用)?

         在多条件查询时,无法把控用户究竟填写了多少条件,根据用户真正传递的条件,通过判断,生成对应的sql!

怎么使用动态SQL?

 if语句:条件判断标签,test属性的作用就是判断条件

解释:如果参数map集合为空,则查出来的结果为所有,select * from blog where 1 = 1。如果map集合中 title含有值 则where条件中为此条件

trim (where, set):

where标签的作用是替换where关键字,解决不能匹配的问题(实质上, mybatis是对它做了处理,当它遇到AND或者OR这些,它知道怎么处理),如果条件一个都不成立,就不加where关键字

解释:当map为空时就相当于 select * from blog,查blog表全部,当title或author有值时,就根据条件拼接查询,可以处理title和author同时都有值的情况

set设置更新条件,用于动态包含需要更新的列,忽略其它不更新的列。set 元素会动态地在行首插入 SET 关键字,并会删掉额外的逗号(这些逗号是在使用条件语句给列赋值时引入的)

解释:当map为null时,就相当于update blog where id=#{id},如果title和author都有值就相当于 update blog set title=#{title},author=#{author} where id=#{id}

trim是where和set的父标签,通过 trim 标签可以去自定义where和set标签具体的处理规则

上面where标签可以替换为

上面的set标签可以替换为

WHERE是使用的 prefixOverrides(前缀), SET是使用的 suffixOverrides (后缀)

choose (when, otherwise):类似于java中的switch case语句

解释:当map为空时where中执行select * from blog where id=#{id},当满足title不为null时,就拼接 select * from blog where title=#{title},当满足author不为null时,就拼接 select * from blog where author=#{author}

foreach:对集合进行遍历(尤其是在构建 IN 条件语句的时候)

解释:该xml相当于select * from blog where id in(?,?,...)

SQL片段:抽取 SQL 语句标签。

include:引入 SQL 片段标签

分页插件的使用

1.导入分页插件jar包 com.github.pagehelper

2.在核心配置文件中,配置插件

3.在查询语句执行之前,执行下面代码:PageHelper.startPage(当前页码,每页条数);

对更深的多表操作有需求的员兄弟们,看这个大佬的博客

https://blog.csdn.net/weixin_44531966/article/details/113084403?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161398775516780261994056%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161398775516780261994056&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-113084403.first_rank_v2_pc_rank_v29&utm_term=MyBatis+%E5%A4%9A%E8%A1%A8%E6%93%8D%E4%BD%9C

感谢各位的耐心阅读,有问题可以私我哦,或者评论区见!

 

 

 

 

 

 

 
 

 

 

 
 

 

 

最后

以上就是粗心小猫咪为你收集整理的他来了!mybatis框架使用详解及SpringBoot集成教程Mybatis框架是什么?Mybatis框架的作用?Mybatis框架什么时候使用?Mybatis框架怎么使用?扩展:的全部内容,希望文章能够帮你解决他来了!mybatis框架使用详解及SpringBoot集成教程Mybatis框架是什么?Mybatis框架的作用?Mybatis框架什么时候使用?Mybatis框架怎么使用?扩展:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部