- 浏览: 980900 次
文章分类
- 全部博客 (428)
- Hadoop (2)
- HBase (1)
- ELK (1)
- ActiveMQ (13)
- Kafka (5)
- Redis (14)
- Dubbo (1)
- Memcached (5)
- Netty (56)
- Mina (34)
- NIO (51)
- JUC (53)
- Spring (13)
- Mybatis (17)
- MySQL (21)
- JDBC (12)
- C3P0 (5)
- Tomcat (13)
- SLF4J-log4j (9)
- P6Spy (4)
- Quartz (12)
- Zabbix (7)
- JAVA (9)
- Linux (15)
- HTML (9)
- Lucene (0)
- JS (2)
- WebService (1)
- Maven (4)
- Oracle&MSSQL (14)
- iText (11)
- Development Tools (8)
- UTILS (4)
- LIFE (8)
最新评论
-
Donald_Draper:
Donald_Draper 写道刘落落cici 写道能给我发一 ...
DatagramChannelImpl 解析三(多播) -
Donald_Draper:
刘落落cici 写道能给我发一份这个类的源码吗Datagram ...
DatagramChannelImpl 解析三(多播) -
lyfyouyun:
请问楼主,执行消息发送的时候,报错:Transport sch ...
ActiveMQ连接工厂、连接详解 -
ezlhq:
关于 PollArrayWrapper 状态含义猜测:参考 S ...
WindowsSelectorImpl解析一(FdMap,PollArrayWrapper) -
flyfeifei66:
打算使用xmemcache作为memcache的客户端,由于x ...
Memcached分布式客户端(Xmemcached)
Myeclispe下mybatis generator的使用:http://donald-draper.iteye.com/blog/2309387
MyBatis缓存介绍:http://www.cnblogs.com/xdp-gacl/p/4270403.html
MyBatis 缓存机制深度解剖 / 自定义二级缓存:http://www.iteye.com/topic/1112327
深入浅出MyBatis-Configuration :http://blog.csdn.net/hupanfeng/article/details/9080545/
SqlSessionFactory初始化:http://donald-draper.iteye.com/admin/blogs/2331917
Mybatis加载解析Mapper(xml)文件第一讲:http://donald-draper.iteye.com/blog/2333125
Mybatis加载解析Mapper(xml)文件第二讲:http://donald-draper.iteye.com/admin/blogs/2333191
创建User表:
创建testMybatis工程,根据Myeclispe下mybatis generator的使用这篇文章,自动生成,
实体类,Mapper接口与xml文件,我的generatorConfig.xml文件如下
生成的实体类:
生成的xml:
生成的Mapper接口:
新建mybatisConfig.xml文件
Session测试主类:
控制台输出:
======u1:{"id":1,"registertime":null,"name":"donald","age":12}
======u3:{"id":2,"registertime":null,"name":"jamel","age":30}
======cache-u3-name:rain
接口测试主类:
控制台输出:
======u1:{"id":1,"registertime":null,"name":"jamel","age":20}
我的工程目录:
MyBatis缓存介绍:http://www.cnblogs.com/xdp-gacl/p/4270403.html
MyBatis 缓存机制深度解剖 / 自定义二级缓存:http://www.iteye.com/topic/1112327
深入浅出MyBatis-Configuration :http://blog.csdn.net/hupanfeng/article/details/9080545/
SqlSessionFactory初始化:http://donald-draper.iteye.com/admin/blogs/2331917
Mybatis加载解析Mapper(xml)文件第一讲:http://donald-draper.iteye.com/blog/2333125
Mybatis加载解析Mapper(xml)文件第二讲:http://donald-draper.iteye.com/admin/blogs/2333191
创建User表:
DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) default NULL, `age` int(11) default NULL, `registerTime` timestamp NULL default NULL on update CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建testMybatis工程,根据Myeclispe下mybatis generator的使用这篇文章,自动生成,
实体类,Mapper接口与xml文件,我的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-generator-config_1_0.dtd" > <generatorConfiguration > <classPathEntry location="E:\lib\mysql-connector-5.1.8.jar" /> <context id="contextMybatis" > <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8" userId="root" password="123456" /> <javaModelGenerator targetPackage="test.entity" targetProject="TestMybatis" /> <sqlMapGenerator targetPackage="test.Mapper" targetProject="TestMybatis" /> <javaClientGenerator targetPackage="test.Dao" targetProject="TestMybatis" type="XMLMAPPER" /> <table tableName="user" domainObjectName="User" enableInsert="true" enableSelectByPrimaryKey="true" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true" enableSelectByExample="false" enableDeleteByExample="false" enableCountByExample="false" enableUpdateByExample="false"> </table> </context> </generatorConfiguration>
生成的实体类:
package test.entity; import java.util.Date; public class User { private Integer id; private String name; private Integer age; private Date registertime; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getRegistertime() { return registertime; } public void setRegistertime(Date registertime) { this.registertime = registertime; } }
生成的xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="test.Dao.UserMapper"> <resultMap id="BaseResultMap" type="test.entity.User"> <id column="id" property="id" jdbcType="INTEGER" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="age" property="age" jdbcType="INTEGER" /> <result column="registerTime" property="registertime" jdbcType="TIMESTAMP" /> </resultMap> <sql id="Base_Column_List"> id, name, age, registerTime </sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer"> select <include refid="Base_Column_List" /> from user where id = #{id,jdbcType=INTEGER} </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer"> delete from user where id = #{id,jdbcType=INTEGER} </delete> <insert id="insert" parameterType="test.entity.User" keyProperty="id"> insert into user (id, name, age, registerTime) values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, #{registertime,jdbcType=TIMESTAMP}) </insert> <insert id="insertSelective" parameterType="test.entity.User"> insert into user <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="name != null"> name, </if> <if test="age != null"> age, </if> <if test="registertime != null"> registerTime, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=INTEGER}, </if> <if test="name != null"> #{name,jdbcType=VARCHAR}, </if> <if test="age != null"> #{age,jdbcType=INTEGER}, </if> <if test="registertime != null"> #{registertime,jdbcType=TIMESTAMP}, </if> </trim> </insert> <update id="updateByPrimaryKeySelective" parameterType="test.entity.User"> update user <set> <if test="name != null"> name = #{name,jdbcType=VARCHAR}, </if> <if test="age != null"> age = #{age,jdbcType=INTEGER}, </if> <if test="registertime != null"> registerTime = #{registertime,jdbcType=TIMESTAMP}, </if> </set> where id = #{id,jdbcType=INTEGER} </update> <update id="updateByPrimaryKey" parameterType="test.entity.User"> update user set name = #{name,jdbcType=VARCHAR}, age = #{age,jdbcType=INTEGER}, registerTime = #{registertime,jdbcType=TIMESTAMP} where id = #{id,jdbcType=INTEGER} </update> </mapper>
生成的Mapper接口:
package test.Dao; import test.entity.User; public interface UserMapper { int deleteByPrimaryKey(Integer id); int insert(User record); int insertSelective(User record); User selectByPrimaryKey(Integer id); int updateByPrimaryKeySelective(User record); int updateByPrimaryKey(User record); }
新建mybatisConfig.xml文件
<?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> <settings> <setting name="cacheEnabled" value="true" /><!-- 全局映射器启用缓存 --> <setting name="useGeneratedKeys" value="true" /> <setting name="defaultExecutorType" value="REUSE" /> </settings> <typeAliases> <typeAlias alias="User" type="test.entity.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/test" /> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="test/Mapper/UserMapper.xml"/> </mappers> </configuration>
Session测试主类:
package test.main; import java.io.Reader; import java.util.Date; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import test.entity.User; import test.util.JsonUtil; public class testSqlSession { private static SqlSessionFactory sqlSessionFactory; private static Reader reader; static{ try{ reader = Resources.getResourceAsReader("mybatisConfig.xml"); /* System.out.println("========path:"+Thread.currentThread().getContextClassLoader().getResource("mybatisConfig.xml")); Thread.currentThread().getContextClassLoader(); System.out.println("========systemPath:"+ClassLoader.getSystemResource("mybatisConfig.xml"));*/ sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); }catch(Exception e){ e.printStackTrace(); } } public static SqlSessionFactory getSession(){ return sqlSessionFactory; } public static void main(String[] args) { SqlSession session = sqlSessionFactory.openSession(); try { User u1 = new User(); u1.setAge(12); u1.setName("donald"); session.insert("test.Dao.UserMapper.insert", u1); User u2 = session.selectOne("test.Dao.UserMapper.selectByPrimaryKey", u1.getId()); System.out.println("======u1:"+JsonUtil.toJson(u2)); User u3 = new User(); u3.setAge(30); u3.setName("jamel"); session.insert("test.Dao.UserMapper.insert", u3); User u4 = session.selectOne("test.Dao.UserMapper.selectByPrimaryKey", u3.getId()); System.out.println("======u3:"+JsonUtil.toJson(u4)); // session.flushStatements(); //提交插入的数据 session.commit(); u3.setName("rain"); //update过后,清除一二级缓存 session.update("test.Dao.UserMapper.updateByPrimaryKeySelective", u3); session.commit(); User u5 = session.selectOne("test.Dao.UserMapper.selectByPrimaryKey", u3.getId()); System.out.println("======cache-u3-name:"+u5.getName()); } catch(Exception e){ e.printStackTrace(); } finally { session.close(); } } }
控制台输出:
======u1:{"id":1,"registertime":null,"name":"donald","age":12}
======u3:{"id":2,"registertime":null,"name":"jamel","age":30}
======cache-u3-name:rain
接口测试主类:
package test.main; import java.io.Reader; import java.util.Date; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import test.Dao.UserMapper; import test.entity.User; import test.util.JsonUtil; public class testMapperInterface { private static SqlSessionFactory sqlSessionFactory; private static Reader reader; static{ try{ reader = Resources.getResourceAsReader("mybatisConfig.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); }catch(Exception e){ e.printStackTrace(); } } public static SqlSessionFactory getSession(){ return sqlSessionFactory; } public static void main(String[] args) { SqlSession session = sqlSessionFactory.openSession(); try { User u1 = new User(); u1.setAge(20); u1.setName("jamel"); UserMapper userOperation=session.getMapper(UserMapper.class); userOperation.insert(u1); session.flushStatements(); session.commit(); User u2 = userOperation.selectByPrimaryKey(u1.getId()); System.out.println("======u1:"+JsonUtil.toJson(u2)); } catch(Exception e){ e.printStackTrace(); } finally { session.close(); } } }
控制台输出:
======u1:{"id":1,"registertime":null,"name":"jamel","age":20}
我的工程目录:
发表评论
-
Mybatis缓存实现
2016-12-07 10:36 979SqlSessionFactory初始化:http://don ... -
DefaultSqlSession第三讲-事务提交,回滚,关闭SqlSession,清除缓存
2016-11-20 11:07 5699上面两篇讲过query和update及flushStateme ... -
DefaultSqlSession第二讲-更新,刷新Statement
2016-11-20 11:06 627上一篇文章中,我们讲到DefaultSqlSession的查询 ... -
DefaultSqlSession第一讲query解析
2016-11-20 11:06 1622上一篇文章:我们说过DefaultSqlSession,Def ... -
Mybatis的SqlSession解析
2016-11-20 11:02 2544在前文中,Mybatis使用教程中,有下面一段代码: Sql ... -
Mybatis的Reflector解析
2016-11-18 12:53 2159Mybatis的MetaObject解析:http://don ... -
Mybatis的MetaObject解析
2016-11-18 11:40 9576SqlSessionFactory初始化:http://don ... -
mybatis 动态标签语句的解析(BoundSql)
2016-10-30 09:48 5754SqlSessionFactory初始化:http://don ... -
Mybatis的Environment解析详解
2016-10-29 18:28 1992SqlSessionFactory初始化:http://don ... -
Mybatis 解析Mapper(class)
2016-10-26 11:44 3346SqlSessionFactory初始化:http://don ... -
Mybatis加载解析Mapper(xml)文件第二讲
2016-10-25 21:30 4783SqlSessionFactory初始化:http://don ... -
Mybatis加载解析Mapper(xml)文件第一讲
2016-10-25 16:51 6176SqlSessionFactory初始化:http://don ... -
SqlSessionFactory初始化
2016-10-20 15:38 2454mybatis 使用教程:http://donald-drap ... -
Spring+Mybatis多数据源的实现
2016-09-21 18:15 3094浅谈Spring事务隔离级别:http://www.cnblo ... -
mybaitis CDATA 防止字符被解析
2016-08-17 18:45 723在使用mybatis 时我们sql是写在xml 映射文件中,如 ... -
Myeclispe下mybatis generator的使用
2016-07-05 18:05 1375准备:下载附件包解压到myeclispe的dropins文件夹 ...
相关推荐
本教程针对MyBatis的使用进行详尽的介绍,适合初学者入门学习。文档《mybatis使用教程.docx》可能包含以下内容: 1. **安装与配置**:首先,你需要了解如何在项目中引入MyBatis的依赖,这通常通过Maven或Gradle来...
### MyBatis 使用教程知识点概览 #### 一、MyBatis简介与优势 - **定义**:MyBatis是一个优秀的持久层框架,它支持普通的SQL查询、存储过程以及高级映射功能。通过使用简单的XML或注解进行配置和原始映射,它可以将...
【标题】"Mybatis系列教程Mybatis插件共8页.pdf.z" 提供的信息表明,这是一个关于Mybatis框架的教程,特别关注Mybatis插件的使用。Mybatis是一款流行的Java持久层框架,它允许开发者直接编写SQL语句,提供灵活的数据...
9.《尚硅谷_MyBatis_全局配置文件_typeAliases_别名.avi》讲解了类型别名的使用,通过定义别名可以简化类名引用,提高代码可读性。 7.《尚硅谷_MyBatis_全局配置文件_properties_引入外部配置文件.avi》介绍了如何...
《尚硅谷Mybatis视频教程11-20》是一系列深入讲解Mybatis框架的视频教程,涵盖了Mybatis的多个核心概念和技术。Mybatis是Java开发中的一个持久层框架,它简化了数据库操作,使得开发者能够更加专注于SQL和业务逻辑。...
尚硅谷发布的这套MyBatis视频教程,是国内首套源码级讲授的MyBatis教程,非常适合希望深入了解MyBatis内部原理及实现机制的学习者。通过本篇总结,我们不仅了解了MyBatis的基本概念、核心功能,还探讨了一些实战中的...
MyBatis3是一款深受开发者喜爱的轻量级Java持久层框架,它...这个中文完整版教程将深入讲解这些知识点,并通过实例帮助读者更好地理解和掌握MyBatis3的使用,无论是初学者还是有一定经验的开发者,都能从中受益匪浅。
《尚硅谷Mybatis视频教程21-30》是一系列深入讲解Mybatis核心技术和实践应用的视频课程。在这些视频中,讲师详细解析了Mybatis的多个关键特性,旨在帮助学习者掌握Mybatis的精髓,提升数据库操作能力。以下是根据...
MyBatis3 是一款流行的Java持久层框架,它简化了...通过学习本教程,读者将掌握如何使用MyBatis3进行数据操作,包括配置、SQL映射、动态SQL、结果映射、事务管理和缓存等关键知识点,从而提升开发效率和代码质量。
很详细的mybatis教程,介绍了mybatis的类结构以及详细的使用配置
MyBatis学习代码: mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in ...mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载
Springmvc+Mybatis精品教程 专用sql。找了半天没找到。 所以上传下 配套教程地址:https://www.bilibili.com/video/BV1sb411x7VQ?p=4
MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 一、MyBatis基本概念与安装 MyBatis的核心组件包括SqlSessionFactory、...
最新MyBatis教学视频,视频包含:MyBatis配置文件编写,MyBatis动态SQL,MyBatis缓存机制,MyBatis-Spring整合,MyBatis逆向工程,MyBatis高级内容
【标题】"Mybatis系列教程Mybatis复杂映射开发共6页" 提供了一个关键信息,即本教程专注于Mybatis的复杂映射开发,这通常指的是在Mybatis框架中处理多对一、一对多、多对多等复杂数据关系的能力。Mybatis作为一个...
2019年最新mybatis的学习教程加代码测试实例。由浅入深分别演示:1、最初基本实现原理代码;2、generator使用及代码实例;3、一对一,一对多及多对多关系代码配置应用实例;4、与spring结合应用实例。 每个实例均附...
【标题】"Mybatis系列教程Mybatis注解开发共9页.pdf" 提供的是一个关于Mybatis框架注解开发的教程,重点在于讲解如何在Mybatis中使用注解进行数据库操作。Mybatis是一个轻量级的Java持久层框架,它允许开发者通过...
### MyBatis中文版教程与Spring整合:详细解析 #### 整合动机与背景 MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Spring框架则是企业级Java应用程序的首选,它提供了强大的依赖注入、...