03.04 mybatis如何从接口映射到xml?

幸福小思路


现在做的项目刚好使用的是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还有更多用法,玩法,关注我,我们一块学习!


分享到:


相關文章: