前言
目前的大环境下,使用Mybatis
作为持久层框架还是占了绝大多数的,下面我们来说一下使用Mybatis
的几种姿势。
姿势一:零配置注解开发
第一步:引入依赖
首先,我们需要在pom文件中添加依赖:
![8099974827d3268ab275cf2b98d8ff8d.png](https://i-blog.csdnimg.cn/blog_migrate/3fa69d2854c4b382a6922dfaf2aa2c0c.jpeg)
![bec9d25c83fcfd9b7f8df8b10afd151f.png](https://i-blog.csdnimg.cn/blog_migrate/36c486254c8f694a871895887af65e65.jpeg)
第二步:配置文件
![9b3c6310e72dd039459d62ac6506361a.png](https://i-blog.csdnimg.cn/blog_migrate/51c020f37d24449e38563464aa0d709b.jpeg)
这里我们采用yml来进行编写,与properties文件相比,yml看起来更加简洁优雅,这里需要注意的是driver-class-name
这个属性我们采用的是com.mysql.cj.jdbc.Driver
而非之前的com.mysql.jdbc.Driver
,如果采用之前包下的Driver
,控制台会打印出一行这样的信息告诉我们去用新的~
![c8ff59932ffc1cff465c424d0d148452.png](https://i-blog.csdnimg.cn/blog_migrate/a6e8f1d1ee7c43e071993705c05d4212.png)
第三步:指定MapperScan
首先,我们需要在启动类指定@MapperScan
,这样做就可以不用去挨个的在Mapper
接口中添加@Mapper
注解。这里的值就是你的Mapper
接口所在的包的路径。
![ab4cc6eb0c7ad353ee13d3461873bbc2.png](https://i-blog.csdnimg.cn/blog_migrate/1eb190a8962299519b43109c660b4c80.png)
第四步:编写Mapper接口
![4664677340f97991ae7cc6b51eed4a93.png](https://i-blog.csdnimg.cn/blog_migrate/b4272b6cb51db6189f871e51c955a5e1.jpeg)
通过@Select
注解和@Results
注解可以指定SQL语句以及返回值。当然,其他的不同的操作也有不同的注解,比如@Insert
、@Update
、@Delete
![7bfbc535333dc5ca3c3f9702c141ab4a.png](https://i-blog.csdnimg.cn/blog_migrate/f4ae47ce6e5497ac67944b39e49fc981.jpeg)
第五步:测试程序编写
![1f517c379a74a8e7947dee431ebdae65.png](https://i-blog.csdnimg.cn/blog_migrate/12939d8613183a8408c611758ef61582.jpeg)
![cc62dc88d1868a6f7d216d74c670f4fa.png](https://i-blog.csdnimg.cn/blog_migrate/3ee25d307d564ca75f146e795d3264ad.jpeg)
访问 localhost:8081/user/findAll,我们就可以看到测试的结果:
![6143f52072cbe361a8c44a05c3dc291e.png](https://i-blog.csdnimg.cn/blog_migrate/63136d215f98379bb0ff8d35abfe0ce7.jpeg)
姿势二:XML
我们用的最多的是这种方式,下面来看看怎么去实现,第一步与姿势一的重复,这里就不再多做阐述
第一步:编写配置文件
我们需要在配置文件中添加mybatis-config.xml
的路径以及用于Mapper*.xml
的文件的路径:
![34feaefedd9c0f3d99a4484cb77df392.png](https://i-blog.csdnimg.cn/blog_migrate/b69792936fd8e01bad48b1c05a535ca5.png)
第二步:编写Mapper接口以及配置文件:
Mapper接口:
![a3171bfe4f190d7a20224eb39f4537e9.png](https://i-blog.csdnimg.cn/blog_migrate/9f6d1844bc2764cf85ad01bc90724802.jpeg)
mybatis-config.xml:
![7f4039ce1eaeee9298b5e24668d2cdd7.png](https://i-blog.csdnimg.cn/blog_migrate/f11e4fc26655156fe80e4f2e905fedd4.jpeg)
UserMapper.xml:
![ef2debd5ab4e1eab33ab31da72af5980.png](https://i-blog.csdnimg.cn/blog_migrate/35698632d2bc8debe33fe5d93bb1c26b.jpeg)
这里需要注意UserMapper.xml中的namespace
需要与接口的路径一致,否则会出现错误。
测试:
测试的程序与之前的一致,我们直接访问localhost:8082/user/findAll
,可以看到成功的结果:
![26bd32a059cac9ef4f368503787b1864.png](https://i-blog.csdnimg.cn/blog_migrate/08090f41cf64427f4c6001be00456577.jpeg)
姿势三:SqlSession
使用SqlSession的姿势和可以与上面两种方式进行结合,emmm。。。可以这么理解,SQL就在那里,只不过分为了两个不同的方法去调用。其余的代码我们就不再多讲,直接来看是如何调用的:
![e187d25e658edeb402efd6c79e2b2d15.png](https://i-blog.csdnimg.cn/blog_migrate/602a9a2a700332f907faf8cdba6380a6.png)
可以看到,参数写的是要调用的方法的路径(这里是与namespace
相对应)。下面我们可以运行一下程序:
![f95ceb5b62f2fe6b23f75fda43ceefa3.png](https://i-blog.csdnimg.cn/blog_migrate/83eb5c0e66c87ebdd4af0213c89375f7.jpeg)
姿势四:基于SqlSession的升级
这里,我们基于SqlSession
进行了一次升级,首先我们写了一个BaseDao
,作为一个公用的接口。接口的实现是通过sqlSessionTemplate
。
然后我们将*Mapper.xml
的namespace
改为*Mapper
。现在,我们可以直接将所有的Mapper
接口删除,直接通过dao
进行调用~
![ba9f4edf5f3638c67fa2c0276546ad9a.png](https://i-blog.csdnimg.cn/blog_migrate/cc75d9bbd59cf4c7ad7805812ca2973e.jpeg)
![831c2fe94efa3ff455cd30f0d1af6545.png](https://i-blog.csdnimg.cn/blog_migrate/af1d0703ed4ede35a35fb27d4f572d3b.jpeg)
![77ebfbf618af7346b97b0262310a32c2.png](https://i-blog.csdnimg.cn/blog_migrate/7978b8871222b5ba652656aaf6497ad5.png)
![b228853b1c194f1d582321438067a331.png](https://i-blog.csdnimg.cn/blog_migrate/86dc27c9ffcd76f6d1a65b610dd3af2f.jpeg)
然后我们来启动程序后去访问
![6330cf0011b48411129380ea73e1b15b.png](https://i-blog.csdnimg.cn/blog_migrate/6a71793e342ea2695556b1b6d82b6d45.jpeg)
关于Mybatis
的使用,我们就先讲到这里~
源码可以去github或者码云上进行下载,后续的例子都会同步更新。
云撸猫
![ed02e2de70b14b3a21303490fb2af8f0.png](https://i-blog.csdnimg.cn/blog_migrate/958bbbb9bc6984b4436171ef44062589.jpeg)
公众号
![6015f913182e90db072c73816c9b7454.png](https://i-blog.csdnimg.cn/blog_migrate/3e6389ee8cf734b3d9dd99e01651ed23.jpeg)
原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。