热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mybatis运行时加载自定义mapper文件

原标题:mybatis运行时加载自定义mapper文件mybatis运行时加载自定义ma文章来源地址47630.html

原标题:mybatis 运行时加载自定义mapper文件


mybatis 运行时加载自定义ma文章来源地址47630.htmlpper文件

用mybatis一定要写mapper文件,这是使用mybatis的常识,但有时候应用需求,mapper文件中的节点需要动态生成,或者根据业务场景进行组装,那这个时候的SQL语句直接写在mapper文件显然不可取,又或者采用动态SQL完成,今天介绍一种方式,支行时加载自定义mapper配置文件。

我首先介绍一种mapper文件存在的写法,也是文章来源站点https://www.yii666.com/大家常用的,至于spring-mybatis配置方法,我这里就不列了:
dao接口:

package com.springmvc.mybatis.dao;
import java.util.List;
public interface DatabaseObjectQueryDao {

List getAllSequence();

}

mapper文件:


"http://mybatis.org/dtd/mybatis-3-mapper.dtd">








好,大家注意了, 下面开始分享无mapper动态加载写法!



dao接口:

package com.springmvc.mybatis.dao;
/**
* Discript:
*
* @author
* @date 创建时间:2018/10/11 15:33
*/
public interface LoadMapperFileDao {
String getAllSequence();
}

这里没有mapper文件,怎么办? 没有我们就给他造:

package com.springmvc.mybatis.test;
import org.apache.ibatis.builder.xml.XMLMapperBuilder;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
/**
* Discript:
*
* @author
* @date 创建时间:2018/10/11 15:01
*/
@Service
public class LoadMapperFileTest implements InitializingBean{
www.yii666.com @Autowired
private SqlSessionFactory sqlSessionFactory;
private Configuration mapperConfig;
public void afterPropertiesSet() throws Exception {
//mapper文件的实际内容,此处可根据业务需求进行拼装文件内容
String cOntextXml= "\n" +
" "\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n" +
"\n" +
"\t\n" +
"
";
//一般与namespace相同
String mapperId = "com.springmvc.mybatis.dao.LoadMapperFileDao";
mapperCOnfig= sqlSessionFactory.getConfiguration();
try {
InputStream is = new ByteArrayInputStream(contextXml.getBytes());
XMLMapperBuilder xmlMapperBuilder = new XMLMapperBuilder(is, this.mapperConfig, mapperId, this.mapperConfig.getSqlFragments());
xmlMapperBuilder.parse();
System.out.println("自定义加载完毕!");
}catch (Exception e){
}
}
}

总体测试效果及结果代码如下, 大家可以看到DatabaseObjectQueryDao 调用的方法返回值是list所以结果有中括号。而LoadMapperFileDao调用方法返回的是string所以只看见一串时间 :
在这里插入图片描述

来源于:mybatis 运行时加载自定义mapper文件


推荐阅读
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
author-avatar
微公号莆田鞋园
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有