需求: 本身平台支持mysql这样的数据库,但是随着业务的增长需要将一部分数据,放入ES中,但是让每个研发自行编写ES相关的语法,有点困难,故设计利用mybaits操作ES
mybatis的原理
- 1: 加载mybaits-config 读取链接配置信息, mapper locations等信息
- 2: 构建sqlsessionFactory对象
- 3: 根据sqlsessionFactory对象生成sqlSession对象
- 4: 执行excoter构造器, mybatis底层定义一个excuter来操作数据库,他将用户的输入翻译成sql, 将输入的对象转化成数据库可识别的类型,然后执行sql,在resultSet对象中,再将结果翻译成对象 关键对象: mappedPrepareStatment
构造原理
- 在application.yml文件中,定义链接信息,mapper locations等信息
- 在application.java中增加ESMapperScan注解,制定ES mapper
- 首先读取配置文件,初始化链接
- 定义一个class, 实现importBeanDefinetionRegisty, 扫描ESMapperScan对应的类型信息, 向spring容器注册相关的类信息
- 自定义一个执行器,利用mappedPreparemant将请求,转化成resthttp请求调用
- 定义一个resultHannder 实现结果到对象的转化