ibatis

MyBatis spring in a multi tenant application

二次信任 提交于 2021-02-18 07:55:11
问题 Hi needed some help in using MyBatis spring in a multi tenant application ... Is it possible ? Especially since i do not see how "MapperScannerConfigurer" can be configured with sqlSessionFactory at run time. 回答1: Spring has AbstractRoutingDataSource to take care of this problem http://spring.io/blog/2007/01/23/dynamic-datasource-routing/ 回答2: It is possible to create tenant scoped datasource using factory and wire it to SqlSessionFactory which is used by mappers generated by mybatis-spring.

mybatis 枚举typeHandler

こ雲淡風輕ζ 提交于 2021-02-17 13:54:40
枚举typeHandler 在绝大多数情况下,typeHandler因为枚举而使用,MyBatis已经定义了两个类作为枚举类型的支持,这两个类分别是:   •EnumOrdinalTypeHandler。   •EnumTypeHandler。 因为它们的作用不大,所以在大部分情况下,我们都不用它们,不过我们还是要稍微了解一下它们的用法。 EnumOrdinalTypeHandler EnumOrdinalTypeHandler是按MyBatis根据枚举数组下标索引的方式进行匹配的,也是枚举类型的默认转换类,它要求数据库返回一个整数作为其下标,它会根据下标找到对应的枚举类型 EnumTypeHandler EnumTypeHandler会把使用的名称转化为对应的枚举,比如它会根据数据库返回的字符串“MALE”,进行Enum.val-ueOf(SexEnum.class,"MALE");转换 自定义枚举typeHandler 代码清单4-23:SexEnumTypeHandler package com.xc.util.typehandler; import com.xc.enumerate.SexEnum; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedJdbcTypes;

mybatis升级为mybatis-plus踩到的坑

邮差的信 提交于 2021-02-15 11:21:48
前言 最近使用RuoYi-Vue来做后台管理脚手架。RuoYi-Vue 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源。其官方文档如下 http://doc.ruoyi.vip/ 感兴趣的朋友,可以点链接查看。这个平台目前的orm框架是mybatis,而项目组的orm框架是mybatis-plus。为了统一技术栈,项目组就决定把若依的orm框架升级为mybatis-plus。因为之前就有过把mybatis升级为mybatis-plus的经验,就感觉这个升级是很简单。但是在改造后,运行程序却报了形如下异常 Invalid bound statement (not found): com.lybgeek.admin.file.mapper.FileMapper.insert 排查 从异常的字面意思是说,FIleMapper中的insert方法没有绑定。查看FileMapper.xml配置,确实没有发现绑定insert这个sql语句块。那是否加上insert的sql语句块,就能解决问题?加上确实是能解决问题。 但如果用过mybatis-plus的朋友

BAT大厂招聘 Java 程序员的技术标准,你达到要求了吗?

依然范特西╮ 提交于 2021-02-14 12:13:27
前言 今天整理了一篇Java 程序员面试大厂的技术标准 文末福利 BATJava 程序员的技术标准 阿里巴巴篇 扎实的计算机专业基础,包括算法和数据结构,操作系统,计算机网络,计算机体系结构,数据库等 具有扎实的Java编程基础,理解IO、多线程等基础框架 熟练使用Linux系统的常用命令及shell有一定了解 精通多线程编程,熟悉分布式,缓存,消息队列等机制; 熟悉JVM,包括内存模型、类加载机制以及性能优化 精通spring mvc、orm框架(ibatis或hibernate)、模板引擎(velocity)、关系型数据库设计及SQL 具备良好的面向对象编程经验,深入理解OO、AOP思想,具有很强的分析设计能力,熟悉常用设计模式 有大型分布式、高并发、高负载、高可用性系统设计和稳定性经验 熟悉面向对象设计开发,熟悉各种常用设计模式,并有在具体的应用场景落地经验 熟悉Spring、iBatis,等开源框架及消息,存储等常用中间件。 有通读过开源框架源码 熟悉基于Oracle或者Mysql的设计和开发、Linux操作系统 熟悉SOA,有平台化实施经验者,有大数据量、高并发系统和大型网站构建经验 分布式系统应用架构设计与研发经验,精通Java EE、SOA、OSGI等相关技术 对各种开源的框架如Spring、Hibernate等有深入的了解,对框架本身有过开发或重构者可优先考虑

No support for iBatis in Spring4.2.0

99封情书 提交于 2021-02-07 14:43:43
问题 There is no support for ibatis in Spring4.2.0. MY project is upgrading from Spring 3.2.4 to Spring 4.2. As i googled, i found spring4.2 integration examples with mybatis but not with ibatis. Can somebody help me on how i can add ibatis support? 回答1: iBATIS 2.x support was removed from Spring in version 4.0 but there is a workaround for that. See this post: http://blog.mybatis.org/2015/11/spring-4-got-you-down-with-no-ibatis.html Basically you just have to add this dependency to your project:

No support for iBatis in Spring4.2.0

纵然是瞬间 提交于 2021-02-07 14:40:37
问题 There is no support for ibatis in Spring4.2.0. MY project is upgrading from Spring 3.2.4 to Spring 4.2. As i googled, i found spring4.2 integration examples with mybatis but not with ibatis. Can somebody help me on how i can add ibatis support? 回答1: iBATIS 2.x support was removed from Spring in version 4.0 but there is a workaround for that. See this post: http://blog.mybatis.org/2015/11/spring-4-got-you-down-with-no-ibatis.html Basically you just have to add this dependency to your project:

java.sql.SQLException: The user specified as a definer ('userxxx'@'%') does not e...

一个人想着一个人 提交于 2021-02-02 05:53:11
java.sql.SQLException: The user specified as a definer ('userxxx'@'%') does not exist Java接口在执行查询的时候报错如下: java.sql.SQLException: The user specified as a definer ('userxxx'@'%') does not exist 错误详情: 2019-12-24 14:18:44 [ ERROR ] [DUBBO] Got unchecked and undeclared exception which called by 10.11.22.2. service: com.imodule.report.service.report.workflow.ReportService, method: queryNewSingleCase, exception: org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [HY000]; error code [1449]; --- The error occurred in com/imodule

通过源码分析MyBatis的缓存

瘦欲@ 提交于 2021-01-30 03:23:16
MyBatis缓存介绍 MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在一段高速缓存中,今后执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了默认下基于Java HashMap的缓存实现,以及用于与OSCache、Ehcache、Hazelcast和Memcached连接的默认连接器。MyBatis还提供API供其他缓存实现使用。 重点的那句话就是: MyBatis执行SQL语句之后,这条语句就是被缓存,以后再执行这条语句的时候,会直接从缓存中拿结果,而不是再次执行SQL 这也就是大家常说的MyBatis一级缓存,一级缓存的作用域scope是SqlSession。 MyBatis同时还提供了一种全局作用域global scope的缓存,这也叫做二级缓存,也称作全局缓存。 一级缓存 测试 同个session进行两次相同查询: 1 2 3 4 5 6 7 8 9 10 11 12 @Test public void test() { SqlSession sqlSession = sqlSessionFactory.openSession(); try { User user = (User)sqlSession.selectOne(

Mybatis源码学习(7)--mybatis缓存分析

戏子无情 提交于 2021-01-30 03:17:42
mybatis缓存分为一级缓存和二级缓存,一级缓存作用当个sqlsession,如果sqlSession关闭了,那么缓存就失效了,二级缓存作用在mapper映射文件。默认二级缓存处理类是CachingExecutor,一级缓存处理类是BaseExecutor,调用query方法时会先从二级缓存中查找结果,再从一级缓存中找,都找不到再查询数据库。 mybatis缓存级别 一级缓存 作用域:当个sqlsession,仅仅对一个会话中的数据进行缓存,不能关闭,调用query查询时,将查询结果缓存在BaseExecutor.localCache变量中,BaseExecutor对象随sqlSession创建而创建,当sqlSession销毁时,BaseExecutor随之消失,缓存消失。 sqlSession从open()到close()中间整个范围就是单个sqlSession作用域,作用域区间如果调用相同的查询方法,并且参数相同,那么只会执行一次sql。 //打开一个sqlsession SqlSession session = ssf.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class); Map<String, Object> map = new HashMap(); map.put(

fastmybatis编写分表插件

那年仲夏 提交于 2021-01-28 17:49:31
fastmybatis 支持原生的插件,将写好的插件配置到mybatis配置文件中即可 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <plugins> <plugin interceptor="xxxxx.MyInterceptor" /> </plugins> </configuration> 这里演示编写一个分表插件 假设有4张分表,user_log0~3,记录用户的日志情况 user_log0 user_log1 user_log2 user_log3 现在需要动态查询指定到某一张表 首先生成对应的实体类,指定一张表生成,不用全部生成 /** * 表名:user_logX * %index% 占位符 */ @Table(name = "user_log%index%") public class UserLog { ... } 注意 %index% 占位符 Mapper不变 public interface UserLogMapper extends CrudMapper