幸福小思路
现在做的项目刚好使用的是SSM框架,受益于mybatis以及mybatis generator的自动化,但是也必须承认mybatis generator自动生成的一些语句在部分场景受限,有时需要开发者去手动写sql语句,封装成函数,给上层调用。
首先介绍下mybatis generator。
与hibernate相比,很多人觉得mybatis使用的时候需要开发者自己编写xml文件很繁琐,但是借助mybatis generator这个插件,这份xml生成工作完全可以托管。只需要在eclipse或者intellij的market里安装mybatis generator插件,就可以使用。
如果不想安装插件,也可通过mvn命令(mvn mybatis-generator:generate)来使用这个插件。
使用了这个插件之后,能够自动生成xxxEntity.java, xxxEntityExample.java,
xxxEntityMapper.java
和xxxEntityMapper.xml
四个基本文件。其中
xxxEntity.java
存储了数据库对应的数据结构,即每一个字段对应一个参数;xxxEntityExample.java
存储了查询语句的基本条件(比如 ... where id=3 and name='xm'这种查询条件);
xxxEntityMapper.java
存储了查询方法(多个条件组成一个查询方法,比如把上面的查询条件补充完整,变成 select * from yTable where id=3 and name='xm',这个就是一个查询方法,叫selectByExample)
xxxEntityMapper.xml
存储了实际的sql语句,下图是我从我们实际工程中截的图,对应了Mapper.java
文件中的update()和delete()两个方法。在介绍完上面四个文件之后,如果你有新的需求,需要自己写sql语句的时候,你就应该知道该怎么办了。
首先是在
Mapper.java
文件中声明一个方法,然后在Mapper.xml
文件中,把你的方法写作动态的sql语句,我再贴一张我写的截图。这个截图就是首先在Mapper.java
文件中增加getStabilityOrderByPhoneId方法,然后再到xml文件里增加sql语句就可以用啦。以上就是mybatis从接口映射到xml的方法,欢迎各位在下方评论区留言点赞。
我是苏苏思量,来自BAT的JAVA开发工程师,每日分享科技类见闻,欢迎关注我,与我共同进步。
一个存在感小透明
mybatis作为JAVA开发最流行的ORM(object renational mapping)框架,能够将JAVA实体类和数据库中的字段结合映射起来,达到直接操作数据库的目的!
需要明确的是,所有的ORM框架都基于JAVA原生的JDBC API做了封装,所以首先我们来了解下jdbc是怎么操作数据库的?
1,注册驱动!
2,建立connection!
3 ,创建操作语句statement!
4,执行statement!
5,封装结果resultset!
既然是封装jdbc,也就是在jdbc的基础上进行扩展,达到使用方便的效果!
在mybatis容器初始化的时候,会自动进行驱动注册,并把xml中配置的sql语句按照命名空间(就是接口名)加sql ID的方式作为key,sql语句作为value放入hashMap中存储起来,等到使用的时候从hashmap中取出,经过反射处理得到原生的sql语句,在使用jdbc executor进行执行!
执行过程中,如果有parameterType映射错误,或者SQL语句错误,则会抛出异常到应用层!
得到数据操作结果以后,使用resultmap中的映射关系把数据映射到JAVA实体类中,并创建相应的实例对象!
自己总结的mybatis的常用功能:
1,使用xml文件配置使用映射
2,使用typeAliases修改类型别名
3,使用插件进行方法拦截
4,使用类型句柄(typehandlers)匹配java的参数或者返回值类型
5,使用环境(environments)配置多个不同的环境,以便使用不同的数据库
6,使用事务管理器(Transaction)管理事务
7,使用动态SQL
8,处理一对一关系使用联合(association),处理一对多使用聚集(cellection)
9,使用识别器(discriminator)对产生的结果集进行筛选(类似switch语句)
10,使用cache开启缓存
11,使用缓存引用res-cache(让不同命名空间都能使用同一个缓存机制)
mybatis还有更多用法,玩法,关注我,我们一块学习!