ibatis

定时任务查询数据时返回连接已关闭

﹥>﹥吖頭↗ 提交于 2020-03-01 20:29:02
如下打印的线程栈,原来的定时任务是由线程池形式定时执行,运行一段时间后就会报连接关闭。原来是直接线程访问数据库是没有交给spring的事务去接管的,猜测是连接没有及时释放,然后定时间隔大于异常检测间隔,下次继续用的时候已经被关闭了。 解决方案:定时任务修改为quartz定时任务,将数据库连接交给spring管理。 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at Wed Oct 23 11:12:39 CST 2019 ### The error may exist in org/pml/nos/tunnel/mapper/XxxMapper.java

MyBatis入门实例(Idea)

佐手、 提交于 2020-03-01 10:57:37
开发环境:Idea2018 数据库:mysql 8.0.16 目的:学习Mybatis 数据库准备 本次实例使用数据库mysql 8.0.16,用户名root ,密码123456 创建数据库并建立测试表单: /*创建数据库*/ CREATE DATABASE tms default character set utf8; /*创建数据表单*/ CREATE TABLE `t_members` ( -> `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, -> `nickname` varchar(255) DEFAULT NULL COMMENT '昵称', -> `password` char(32) NOT NULL DEFAULT '' COMMENT '密码', -> `realname` varchar(36) NOT NULL DEFAULT '' COMMENT '真实姓名', -> `gender` enum('MALE','FEMALE','NONE') NOT NULL DEFAULT 'NONE' COMMENT '姓名', -> `rank` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '会员等级', -> `email` char(50) NOT

spring和ibaits整合详解

泪湿孤枕 提交于 2020-02-29 12:42:53
ibatis和Spring整合的详细例子,数据库用的是mysql,开发环境是Eclipse3.2: 1.首先把用到的包导入进来,此例用的是spring-framework-1.2.7,iBATIS_DBL-2.1.7.597,mysql的数 据库连接包用的是mysql-connector-java-5.0.3-bin.jar. 2.建POJO类,在此我们用的是一个Student类. package cn.itcast; public class Student implements java.io.Serializable { private Integer id; private String firstname; private String lastname; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getLastname() { return lastname; }

用mybatis插件抓取最终sql

 ̄綄美尐妖づ 提交于 2020-02-27 06:55:05
痛点概述 当我们在排查bug ,需要看执行的完整sql 时,在 console可以拿到如图的sql 然后手工一个一个的替换问号占位符后,去MySQL 执行,看sql有木有什么问题。如果sql简单,那比较好说, 如果是个复杂sql,手动替换N个问号占位符,这种痛相信大家都经历过。 今天介绍的 MybatisFinalSqlPlugin 插件 正是解决了这样的痛点,可以直接抓到最终sql。 环境 mybatis 3.4.2 实现思路 最近在走读mybatis 核心源码时,发现mybatis自己有构建最终sql,就想着把代码抠出来用,后面找到一个切入点,就是通过mybatis 插件机制,在插件里面获取 mybatis 的几大核心对象,然后获取到 mybatis 自己构建的最终sql,大功告成,详细代码如下。 MybatisFinalSqlPlugin 插件 完整代码 package com.anuo.app.common.datalayer.mybatisplugin; import com.google.common.base.Stopwatch; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis

iBatis查询时报“列名无效”无列名的错误原因及解决方法

醉酒当歌 提交于 2020-02-26 09:42:37
iBatis会 自动缓存 每条查询语句的列名映射,对于动态查询字段或分页查询等queryForPage, queryForList , 就可能产生“ 列名无效 ”、 rs.getObject(object)异常错误 解决办法: 在SQL语句上加一个属性( remapResults )配置让每次执行都重新映射列名。 注:仅在可能被queryForPage()和queryForList()都调用、或者动态字段的SQL语句上加此属性。(以牺牲性能为代价,损耗很小很小)。 如下所示: < select id ="queryPartyRole" parameterClass ="long" resultClass ="java.util.HashMap" remapResults ="true" > </ select > 来源: https://www.cnblogs.com/ding0910/archive/2011/07/12/2104374.html

ibatis的iterate使用

∥☆過路亽.° 提交于 2020-02-25 10:00:55
Iterate:这属性遍历整个集合,并为 List 集合中的元素重复元素体的内容。 Iterate 的属性: prepend - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选) property - 类型为 java.util.List 的用于遍历的元素(必选) open - 整个遍历内容体开始的字符串,用于定义括号(可选) close -整个遍历内容体结束的字符串,用于定义括号(可选) conjunction - 每次遍历内容之间的字符串,用于定义 AND 或 OR(可选) 遍历类型为 java.util.List的元素。 例子: <iterate prepend=”AND” property=”userNameList” open=”(” close=”)” conjunction=”OR”> username=#userNameList[]# </iterate> ibatis中如何配置in语句,需要迭代,不能直接用string的写法 <select id="sql_test" parameterclass="myPramBean" resultclass="myResult"> select *from tablewhere name in <iterate property="ids" conjunction="," close=")" open="(" />

ibatis与spring继承

久未见 提交于 2020-02-25 05:38:13
作为开源的Orm对象映射框架,ibatis是一个线程 安全 ,学习容易,但是开发相对于hibernate来说的话,就要繁锁些,没有很好的工具支持ibatis所有的配置几乎是通过手写,这样增加了开发者的难度、、好啦,言归正转。下面编写实现。 一、引入spring,ibatis jar包. 二、编写log4j.properties日志文件 log4j.rootLogger=DEBUG,stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%c{1}% - %m%n log4j.logger.java.sql.PreparedStatement=DEBUG 三、建立Student.java类映象属性 package org.terry.ibatis.pojo; public class Student { private Long id; private String name; private String subject; private Long score; public Long getId() {

spring ibatis 事物配置

可紊 提交于 2020-02-25 05:36:52
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!--

spring2.5 + ibatis2.3.4 整合开发

こ雲淡風輕ζ 提交于 2020-02-25 05:35:18
spring2.5 + ibatis 2.3.4 + struts2.2.3 整合框架 spring 所需包: —————————————————————————————— dist\spring.jar //spring 核心包 lib\jakarta-commons\commons-logging.jar //spring 日志所需包 lib\log4j\log4j- 1.2.15 .jar //log4j 日志包 使用该包需要配置 properties 文件 具体配置参考? lib\aspectj\aspectjrt.jar //AOP 编程必备包 lib\aspectj\aspectjweaver.jar //AOP 编程必备包 以上包为 spring 配置基本包。 lib\junit\junit-4.4.jar // 如需单元测试 , 加入此包 lib\jakarta-commons\commons-dbcp.jar //DBCP 缓冲池框架 整合 ibatis 所需包 lib\jakarta-commons\commons-pool.jar //Apache 的通用池 Jar 包 , 如果不加入将出现不能创建 datasourcebean dist\resources\spring-beans-2.5.xsd //spring 在 eclipse 中配置提示必备文件

(转)ibatis实现Iterate的使用

不羁岁月 提交于 2020-02-21 11:39:05
(转)ibatis实现Iterate的使用 源自: http://hongzhguan.iteye.com/blog/1222353 <iterate property="" /*可选, 从传入的参数集合中使用属性名去获取值, 这个必须是一个List类型, 否则会出现OutofRangeException, 通常是参数使用java.util.Map时才使用, 如果传入的参数本身是一个java.util.List, 不能只用这个属性. 不知道为啥官网: http://ibatis.apache.org/docs/dotnet/datamapper/ch03s09.html#id386679 说这个属性是必须的, 但是测试的时候是可以不设置这个属性的, 还望那位大虾知道, 讲解一下. */ conjunction="" /*可选, iterate可以看作是一个循环, 这个属性指定每一次循环结束后添加的符号, 比如使每次循环是OR的, 则设置这个属性为OR*/ open="" /*可选, 循环的开始符号*/ close="" /*可选, 循环的结束符号*/ prepend="" /*可选, 加在open指定的符号之前的符号*/ > </iterate> <!-- 批量删除对象的时候,iterate不要property属性 --> <delete id="delStudybook"