MyBatis

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.

Java 数据库树形查询生成菜单结构

拥有回忆 提交于 2021-02-18 06:34:13
Java 数据库树形查询 JAVA从数据库读取菜单,递归生成菜单树。 定义菜单类 public class Menu { // 菜单id private String id; // 菜单名称 private String name; // 父菜单id private String parentId; // 菜单url private String url; // 菜单图标 private String icon; // 菜单顺序 private int order; // 子菜单 private List<Menu> childMenus; // ... 省去getter和setter方法以及toString方法 } 根据这个类定义数据库并且插入我们的菜单数据。 创建数据库 DROP TABLE IF EXISTS `jrbac_menu`; CREATE TABLE `jrbac_menu` ( `id` varchar(32) NOT NULL COMMENT '主键id,uuid32位', `name` varchar(64) NOT NULL COMMENT '登录用户名', `parent_id` varchar(32) DEFAULT NULL COMMENT '父菜单id', `url` varchar(64) DEFAULT NULL COMMENT '访问地址',

spring boot 集成mybatis报错Missing artifact

耗尽温柔 提交于 2021-02-18 03:49:22
1. pom文件中的oracle依赖提示Missing artifact,需要手动下载并导入maven 参考 oracle依赖下载地址 (ojdbc6.jar) cd到下载的ojdbc6.jar所在路径,执行命令 mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar -Dfile=ojdbc6.jar mac端一样。 命令和执行结果截图: pom文件中添加依赖: < dependency > < groupId > com.oracle </ groupId > < artifactId > ojdbc6 </ artifactId > < version > 11.2.0.1.0 </ version > </ dependency > 此时,项目在pom文件中如果报错Missing artifact ,检查以下: 看结果中导入的文件位置是 查看maven使用的repository位置: 将生成的oracle文件拷贝到对应目录下。 来源: oschina 链接: https://my.oschina.net/u/4261514/blog/4197862

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异常:java.lang.ClassNotFoundException: org.mybatis.spring.SqlSessionFactoryBean

徘徊边缘 提交于 2021-02-16 23:14:01
Mybatis异常:java.lang.ClassNotFoundException: org.mybatis.spring.SqlSessionFactoryBean 参考文章: (1)Mybatis异常:java.lang.ClassNotFoundException: org.mybatis.spring.SqlSessionFactoryBean (2)https://www.cnblogs.com/haimishasha/p/6188266.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/3797416/blog/4953242

Mybatis神级奇葩错误

醉酒当歌 提交于 2021-02-16 20:46:21
<? 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> <typeAliases> <typeAlias type ="com.hm.domain.User" /> </typeAliases> <!-- 数据库连接 --> <environments default ="development" > <environment id ="development" > <transactionManager type ="JDBC" /> <dataSource type ="POOLED" > <property name ="driver" value ="com.mysql.jdbc.Driver" /> <property name ="url" value ="jdbc:mysql://localhost:3306/mybatis" /> <property name ="username" value ="root" /> <property name ="password"

MyBatis 自定义 typeHandler

五迷三道 提交于 2021-02-16 19:45:21
自定义typeHandler 对于自定义typeHandler来说,需要在配置文件中注册typeHandlers 然后需要实现TypeHandler接口, 一个例子 首先编写调度的处理类 package com.ming.MyBatis; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.TypeHandler; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class StringTypeHandler implements TypeHandler<String> { private static Logger logger = LogManager.getLogger(); /** * 对预编译的Sql语句进行设置的时候, * @param ps * @param i * @param parameter

Mybatis之TypeHandler

自古美人都是妖i 提交于 2021-02-16 19:35:38
mybatis-3.4.6.release. TypeHandler在mybatis中是个重要的组件,对statement设置参数还是从Resultset中取值,都会用到它。 List-1 public interface TypeHandler<T> { void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException; T getResult(ResultSet rs, String columnName) throws SQLException; T getResult(ResultSet rs, int columnIndex) throws SQLException; T getResult(CallableStatement cs, int columnIndex) throws SQLException; } 如List-1中所示,setParameter方法在ParameterHandler中使用到,其它三个getResult方法在ResultSetHandler中使用到,为什么会有三个getResult方法是因为从ResultSet中获取值,可以通过下标或列名称获取,此外存储过程的处理方式不同。 图1

Mysql的时间类型问题

ε祈祈猫儿з 提交于 2021-02-16 19:24:19
时间类型有time, date, datetime, timestamp 如Mysql官方文档所述: time 没有date,date没有time,datetime是date和time的集合, 而timestamp也是如此。 MySQL retrieves and displays DATETIME values in ‘YYYY-MM-DD HH:MM:SS’ format. The supported range is ‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’. Datetime范围大一些。 而 TIMESTAMP has a range of ‘1970-01-01 00:00:01’ UTC to ‘2038-01-19 03:14:07’ UTC. 范围小一些,所以不推荐使用TIMESTAMP,如果你确定你的代码不能用到2038年。 共同点 A DATETIME or TIMESTAMP value can include a trailing fractional seconds part in up to microseconds (6 digits) precision 后面支持带微秒。 the format for these values is ‘YYYY-MM-DD HH:MM:SS[.fraction]’,

MyBatis的SQL映射文件

大兔子大兔子 提交于 2021-02-16 10:08:55
1.使用MyBatis实现条件查询 (1)sql映射文件 mapper:映射文件的根元素节点,只有一个属性namespace,其作用如下:   <1>用于区分不同的mapper,全局唯一   <2>绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完整限定名查找到对应的mapper配置来执行SQL语句。因此namespace的命名必须要跟接口同名。 cache:配置给定命名空间的缓存 cache-ref:从其他命名空间引用缓存配置 resultMap:用来描述数据库结果集和对象的对应关系 sql:可以重用的SQL块,也可以被其他语句引用 insert:映射插入语句 update:映射更新语句 delete:映射删除语句 select:映射查询语句 2.使用resultMap完成查询结果的展现  (1)resultType   resultType直接表示返回类型,包括基础数据类型和复杂数据类型  (2)resultMap   resultMap则是对外部resultMap定义的引用,对应外部resultMap的id,表示返回结果映射到哪一个resultMap上。它的应用场景一般是:数据库字段信息与对象属性不一致或者需要做复杂的联合查询以便自由控制映射结果  (3)resultType和resultMap的关联