概述
哈喽,every巴得!老生常谈,学习新东西的灵魂四问---是什么?能干什么?什么时候用?怎么用?下面都是通过这四问来诠释mybatis,如有不详或不准确的地方也希望各位员兄弟在评论区指出,暂谢!
Mybatis框架是什么?
要了解mybatis框架是什么首先就得知道ORM是什么,ORM(Object Relational Mapping):对象关系映射 。指的是持久化数据和实体对象的映射模式,为了解决面向对象与关系型数据库存在的互不匹配的现象的技术,接下来再聊mybatis,首先附上人家的官网:http://www.mybatis.org/mybatis-3/
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包版本的兼容和统一
8.使用#{属性名}获取到参数值,如:id由mapper的参数带来
注:1.Resources:加载资源的工具类。
使用注解开发
简而言之,就是不用映射配置文件,直接在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是什么?
为什么要学习动态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框架怎么使用?扩展:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复