ibatis

1.MyBatis入门

断了今生、忘了曾经 提交于 2020-04-06 11:33:58
转载:https://blog.kuangstudy.com/index.php/archives/490/ 一.准备 1.环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.0 IDEA 2.学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 二.MyBatis简介 1.什么是Mybatis MyBatis 是一款优秀的 持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。 MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并且改名为MyBatis 。 2013年11月迁移到 Github . Mybatis官方文档 : http://www.mybatis.org/mybatis-3/zh/index.html GitHub : https://github.com/mybatis/mybatis-3 Maven: 1 <!-- https: // mvnrepository.com/artifact/org

开源:实现MVC与流程控制的框架包LCMVC

点点圈 提交于 2020-04-06 08:51:08
代码,是每个程序员的财富。积累代码,就是积累财富;编写高效代码,就是创造财富。 最近在对”财富“进行整理的时候,找到了我10多年前自己写的框架包,无比怀念,处理成了maven工程,生成了javadoc,git到了开源中国的Gitee上,进行一下开源,大概讲解一下,地址: https://gitee.com/lichongcoco/LCMVC 故事开始大概在2008年左右,我毕业工作2年的时候,那时候开发还是用struts1,现在流行的spring还没那么火,在实际工作中基本没遇到和看到,页面还是jsp的,JDK还是1.6的,还在使用mybatis的前身ibatis。 在空闲的时候,自己开始思考mvc的机制,struts是怎么跑起来的,感觉不是很难, 自己就写了一个简易的mvc,然后逐步丰富功能,增加了事务处理,异常处理,统一所有数据,上送数据统一校验等等 。 后来写的功能流程多了,就渐渐有了一些模块化开发的萌芽和想法,要是通过配置xml,不写具体代码,就能完成一个业务流程,应该也能实现,于是,加上了基于配置化的业务流转功能, 理想状态下,准备好基础组件,配置好数据xml,业务流转xml,就可以不写一行代码(服务端)的跑起来 。 同时增加了一些常用工具类,开发更方便。 现在看来,就好似原始版本的springmvc,据说当时springmvc之所以被开发,就是作者觉得mvc没那么难

Spring+iBatis+Atomikos实现JTA事务

江枫思渺然 提交于 2020-03-30 14:03:54
Atomikos分两个:一个是开源的TransactionEssentials,一个是商业的ExtremeTransactions。 TransactionEssentials的主要特征:JTA/XA 事务管理 —— 提供事务管理和连接池不需要应用服务器 —— TransactionEssentials可以在任何Java EE应用服务器中运行,也就是不依赖于任何应用服务器开源 —— TransactionEssentials是遵守Apache版本2许可的开源软件专注于JDBC/JMS —— 支持所有XA资源,但是资源池和消息监听是专供JDBC和JMS的与Spring 和 Hibernate 集成 —— 提供了描述如何与Spring和Hibernate集成的文档 一、环境 spring 2 ibatis2 AtomikosTransactionsEssentials-3.7.0 下载地址:http://www.atomikos.com/Main/InstallingTransactionsEssentials MySQL-5.1 : 数据库引擎为InnoDB,只有这样才能支持事务 JDK1.6 Oracle10 二 jar包 Atomikos jar必须包 transactions-jdbc.jar transactions-jta.jar transactions.jar

SqlsessionTemplate线程安全解密

一世执手 提交于 2020-03-26 17:34:15
3 月,跳不动了?>>> SqlsessionTemplate线程安全解密 springboot中使用的是SqlsessionTemplate,而不是DefaultSqlsession,这个类是单例的,如何保证线程安全呢? 类图 源码解析 org.mybatis.spring.SqlSessionTemplate#selectList(java.lang.String),委托给代理 @Override public <E> List<E> selectList(String statement) { return this.sqlSessionProxy.<E> selectList(statement); } org.mybatis.spring.SqlSessionTemplate.SqlSessionInterceptor#invoke,代理类核心方法 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // 获取Sqlsession SqlSession sqlSession = getSqlSession( SqlSessionTemplate.this.sqlSessionFactory, SqlSessionTemplate.this

MapperFactoryBean产生代理原理

最后都变了- 提交于 2020-03-26 11:16:32
3 月,跳不动了?>>> MapperFactoryBean产生代理原理 类图 流程 这个类实现了FactoryBean,spring会通过 org.mybatis.spring.mapper.MapperFactoryBean#getObject 来产生bean对象。 @Override public T getObject() throws Exception { return getSqlSession().getMapper(this.mapperInterface); } 委托sqlSession来产生mapper。org.apache.ibatis.binding.MapperRegistry#getMapper。 public <T> T getMapper(Class<T> type, SqlSession sqlSession) { final MapperProxyFactory<T> mapperProxyFactory = (MapperProxyFactory<T>) knownMappers.get(type); if (mapperProxyFactory == null) { throw new BindingException("Type " + type + " is not known to the MapperRegistry."); }

文件上传和下载

梦想与她 提交于 2020-03-22 12:16:10
3 月,跳不动了?>>> 用于存储文件信息的表名 CREATE TABLE `visit_file` ( `id` varchar(32) COLLATE utf8_bin NOT NULL, `visit_id` varchar(32) COLLATE utf8_bin NOT NULL, `file_name` varchar(200) COLLATE utf8_bin NOT NULL, `file_new_name` varchar(200) COLLATE utf8_bin NOT NULL, `save_path` varchar(200) COLLATE utf8_bin NOT NULL, `file_suffix` varchar(10) COLLATE utf8_bin NOT NULL, `file_size` varchar(200) COLLATE utf8_bin NOT NULL, `fcd` date NOT NULL, `fcu` varchar(10) COLLATE utf8_bin NOT NULL, `lcd` date NOT NULL, `lcu` varchar(10) COLLATE utf8_bin NOT NULL, `is_del` varchar(2) COLLATE utf8_bin NOT NULL, PRIMARY

【ibatis】入门讲例

丶灬走出姿态 提交于 2020-03-21 21:55:37
Ⅰ 、Ibatis项目机构 打开资源包,可以看到里面有一个simple_exzample的文件夹,在MyEclipse8.5中新建一个JAVA项目,将刚才的文件夹中内容复制到项目SRC下,这样的话呢,可以看到这样一个目录 Ⅱ、Ibatis的SQL语句配置类MySqlMapConfig.xml <span style="font-size: medium;"><?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <transactionManager type="JDBC" commitRequired="false"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/> <property name="JDBC.ConnectionURL" value="jdbc:mysql://127.0.0.1:3306/ibatis"/>

ibatis入门实例讲解

∥☆過路亽.° 提交于 2020-03-19 00:13:34
目录结构: Test.java package com.you.me; import java.io.IOException; import java.io.Reader; import java.sql.SQLException; import java.util.List; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; /** * author:you.me 2010-12-22 * */ public class Test { static SqlMapClient sqlMapClient = null; static { try { Reader reader = Resources.getResourceAsReader("com/you/me/SqlMapConfig.xml"); sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader); } catch (IOException e) { e.printStackTrace(); } } public

ibatis中resultClass与resultMap 的区别

核能气质少年 提交于 2020-03-17 15:59:40
ibatis的resultClass与resultMap还是有很大的区别。以下是我碰到的一个问题。 配置文件写法如下: 1 sqlMap2 typeAlias alias="notice" type="path.country.basic.entity.Notice"/3 resultMap id={% ... ibatis的resultClass与resultMap还是有很大的区别。以下是我碰到的一个问题。 配置文件写法如下: 1 <sqlMap> 2 <typeAlias alias="notice" type="path.country.basic.entity.Notice"/> 3 <resultMap id="noticeResult" class="notice" > 4 <result property="id" column="MainID"/> 5 <result property="content" column="Notice_Content"/> 6 <result property="isUsed" column="Notice_IsUsed"/> 7 <result property="createMan" column="CreateId"/> 8 <result property="createDate" column="CreateDate"/>

ibatis返回数据集映射举例

心不动则不痛 提交于 2020-03-16 18:31:48
某厂面试归来,发现自己落伍了!>>> object 别名映射->实体类:resultClass < select id = " selectAll" resultClass = "AppLog" > select ID as id , TYPE as type , DESCR as descr from APP_LOG where ID = #id# </ select > List list = sqlMapper .queryForList( "selectAll" ); for ( int i = 0; i < list.size(); i ) { AppLog log = (AppLog) list.get(i); //add your code here; } 别名映射->Map类:resultClass < select id = " selectAll" resultClass = "java.util.HashMap" > select ID as id , TYPE as type , DESCR as descr from APP_LOG where ID = #id# </ select > List list = sqlMapper .queryForList( "selectAll" ); for ( int i = 0; i < list.size();