MyBatis

mybatis多数据源的配置和切换

安稳与你 提交于 2020-02-16 11:09:49
例如,要写一个通用框架。 使用者可以使用mysql也可以使用oracle。 在某种数据库下,可以使用2个数据源。 多个Configuration类的实现 命名空间可以解决这个问题。 在最开头加个特殊的名称。再和 @ConditionalOnProperty配合,如果没有这个属性,就不加载这个类。 如代码: @ConditionalOnProperty ( name = "admin.spring.datasource.driver-class-name" , havingValue = "com.mysql.jdbc.Driver" ) @Configuration public class MysqlConfig { } 如oracle: @ConditionalOnProperty ( name = "admin.spring.datasource.driver-class-name" , havingValue = "oracle.jdbc.driver.OracleDriver" ) @Configuration public class OracleConfig { } 不同数据库之间的区分 设置不同的接口扫描位置: @MapperScan ( basePackages = "com.ali.cloud.mapper.admin" ,

Mybatis的分页工具

╄→гoц情女王★ 提交于 2020-02-16 03:26:08
配置拦截器插件 特别注意,新版拦截器是 com.github.pagehelper.PageInterceptor 。 com.github.pagehelper.PageHelper 现在是一个特殊的 dialect 实现类,是分页插件的默认实现类,提供了和以前相同的用法。 1. 在 MyBatis 配置 xml 中配置拦截器插件 <!-- plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下: properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers? --> <plugins> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 --> <property name="param1" value="value1"/> </plugin> </plugins> 2. 在 Spring 配置文件中配置拦截器插件 使用

mybatis

若如初见. 提交于 2020-02-16 01:21:41
让spring管理bean的四种方法:   @Bean   api registerSingle   factorybean(mybatis所用)   methodfactory mapperScan:spring扩展{importBeanDefinitionRegister} 参考文献: mybatis官网: https://mybatis.org/spring/zh        https://mybatis.org/mybatis-3 来源: https://www.cnblogs.com/erdanyang/p/12315519.html

Mybatis环境搭建

穿精又带淫゛_ 提交于 2020-02-15 19:43:00
依赖 <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.16</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies> resources 中的配置 SqlMapConfig.xml (可以取别的名字) 根配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration

MyBatis 多数据源

会有一股神秘感。 提交于 2020-02-15 13:18:36
序言:在练习Spring Boot + MyBatis多数据源项目时,遇到 ERROR 16856 --- [reate-876365377] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql:///chapter05-1, errorCode 0, state 01S00, java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.问题; 问题描述:1. 控制台界面: 2. 经过仔细的排查,是MySQL本身的时区设置问题导致的。MySQL安装默认时区为美国时区,而北京比美国迟8个小时。 3. IntelliJ

Mybatis面试问题集锦

♀尐吖头ヾ 提交于 2020-02-15 13:17:51
1、#{}和${}的区别是什么? 答:mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值; mybatis在处理 $ { } 时,就是把 ${ } 替换成变量的值,完成的是简单的字符串拼接。 补充:在mybatis中使用#{}可以防止sql注入,提高系统安全性。MyBatis排序时使用order by 动态参数时需要注意,用$而不是# 2、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签? 答:还有很多其他的标签, 、 、 、 、 ,加上动态sql的9个标签,trim|where|set|foreach|if|choose|when|otherwise|bind等,其中 为sql片段标签,通过 标签引入sql片段, 为不支持自增的主键生成策略标签。 3、最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗? 答:Dao接口,就是人们常说的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时

mybatis代码生成插件

一个人想着一个人 提交于 2020-02-15 08:39:12
第一步: 在项目的pom文件中加入插件(build元素下) < build > < plugins > < ! -- mybatis自动生成代码插件 -- > < plugin > < groupId > org . mybatis . generator < / groupId > < artifactId > mybatis - generator - maven - plugin < / artifactId > < version > 1.3 .2 < / version > < configuration > < verbose > true < / verbose > < overwrite > true < / overwrite > < / configuration > < / plugin > < / plugins > < / build > 第二步: 在classpath下新建文件generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis

Mybatis(6)动态SQL if where foreach标签的使用

試著忘記壹切 提交于 2020-02-15 08:35:42
if标签判断(多条件查询) 1.写一个方法 2.配置映射文件 3.测试 2.where标签 where标签可以省略where1=1这个条件,通过mybatis自动生成 3.foreach标签(子查询) 根据id查询user信息,id使用List集合元素 1.在QueryVo实体类中封装一个ids集合和相应的get,set方法 2.写一个方法 3.根据foreach标签拼接sql语句 foreach标签 collection属性指定要遍历的集合ids open属性指定sql的开始 close属性指定sql语句结束 separator属性指定集合中的元素放到sql语句中的隔开符号 item是给ids这个元素的别名 #{ }中要获取的内容是item的内容(写item属性里的别名) 相当于: for (QueryVo idlist:ids) { System.out.println(idlist); } sql语句:select * from user where 1=1 and id in(集合元素1,2,3 ) 4.测试 4.抽取重复sql语句 *sql标签 * 注:sql标签里的sql语句不要在分号,拼接语句时会出错 使用include标签的refid属性直接引用 来源: CSDN 作者: 秃头入门程序猿 链接: https://blog.csdn.net/qq_25539045

解决pagehelper分页不生效

前提是你 提交于 2020-02-15 07:27:19
原来版本: springboot1.5.2 + mybatis1.1.1 + pagehelper4.1.6 生效 (而且不需要额外其他配置) <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <!-- pageHelper 分页插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.6</version> </dependency> 升级版本: springboot2.1.4 + mybatis2.0.0 + pagehelper1.2.5 生效 (需要额外的配置,配置文件或配置类) <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId>

Mybatis框架|一级缓存

守給你的承諾、 提交于 2020-02-15 05:48:38
文章目录 一、程序中的缓存 二、Mybatis的一级缓存 三、测试Mybatis的一级缓存 1.User用户pojo 2.dao接口 3.dao层xml配置 4.测试一级缓存 一、程序中的缓存 所谓的缓存 ,就是将程序或系统经常要调用的对象(临时数据)存在内存中,以便其使用时可以快速调用,不必再去创建新的重复的实例。这样做 可以减少和数据库的交互次数,提高效率。 什么样的数据能使用缓存,什么样的数据不能使用? 适用于缓存的数据:经常查询并且不经常改变的,并且数据的正确与否对最终结果影响不大。 不适用于缓存的数据:经常改变的数据,数据的正确与否对最终结果影响很大的。 MyBatis目前的缓存方式在多表操作时是无解的,使用Mybatis进行多表操作不要进行缓存。 二、Mybatis的一级缓存 Mybatis的一级缓存指的是Mybatis中sqlSession对象的缓存 ,当我们执行查询以后,查询的结果会同时存入到SqlSession为我们提供的一块区域中,该区域的底层结构是一个Map,当我们再次查询同样的数据,mybatis会先去sqlsession中查询是否有,有的话直接拿出来用。一级缓存是SqlSession范围的缓存,当SqlSession对象消失时,mybatis的一级缓存也就消失了。如果调用SqlSession的修改、添加、删除、commit(),close等方法时