初识MyBatis
ORM:对象关系映射,它只是一种规则。
像MyBatis,Hibernate对jdbc进行了封装。
第一章 回顾JDBC开发
1.优点:简单易学,上手快,非常灵活构建SQL(自己写的),效率高。
2.缺点:代码繁琐(各种try..catch..),难以写出高质量的代码(例如:资源的释放,SQL注入安全性等),开发者既要写业务逻辑,又要写对象(连接对象等)的创建和销毁,必须关注底层具体数据库的语法(例如:分页)(MySQL的分页和Oracle的分页语句不同)。
3.适合于超大批量数据的操作,速度快。
开发步骤:
1.加载数据库的驱动Class.forName().
2.通过DriverManager获取数据库的连接.
3.通过Connection获取Statement或PreparedStatement.
4.将SQL语句绑定到Statement或PreparedStatement中去,准备向数据库发送SQL语句.
5.执行完SQL语句之后,返回对象的结果.
ResultSet set = ps.executeQuery(查询)/int i = ps.executeUpdate(增/删/改),返回影响记录数.
6.依次关闭连接对象ResultSet/Statement/Connection.
如果上述操作需要非查询操作的话,还需要事务的支持,简单的写下代码.
connection.setAutoCommit(false);
connection.commit();
connection.rollback();
第二章 回顾hibernate单表开发
1)优点:不用写SQL,完全以面向对象的方式设计和访问,不用管底层具体数据库的语法,(例如:分页)便于理解。
2)缺点:处理复杂业务时,灵活度差, 复杂的HQL难写难理解,例如多表查询的HQL语句
3)适合于中小批量数据的操作,速度慢。
开发步骤:
1.创建Configuration,加载src/hibernate.cfg.xml配置文件,该配置文件中又去加载xx.hbm.xml文件.
2.通过Configuration创建SessionFactory.
3.通过SessionFactory创建Session.
4.通过Session创建Transaction
5.如果做增删改的话一定要事务,如果做查询的话,事务可选.
6.操作Session的常用API,例如:save()/update()/delete()/get().
7.提交事务,出错后事务回滚.
8.关闭Session.
第三章 什么是MyBatis,MyBatis有什么特点
1.基于上述二种支持,我们需要在中间找到一个平衡点,结合它们的优点,摒弃它们的缺点,这就是MyBatis,现今MyBatis被广泛的企业所采用。
2.MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
3.iBatis一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
4.JDBC/DBUtils/Spring DAO,Hibernate/Spring ORM,MyBatis同属于ORM解决方案之一。
第四章 MyBatis快速入门
准备开发环境
1.创建项目MyBatis_Study,普通的java项目或者是JavaWeb项目均可,如下图所示:
aaarticlea/png;base64,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" alt="" />
2.添加项目所需的两个主要jar包:mybatis-3.2.8.jar和mysql-connector-java-5.0.8-bin.jar,以及有关的日志包.
aaarticlea/png;base64,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" alt="" />
3.创建MySQL数据库和表.
SQL脚本如下:
创建表的语句不规范!!请自觉忽略。待我补规范语法,这个请自觉忽略
CREATE DATABASE mybatis;
USE mybatis;
CREATE TABLE student(
id INT(5) PRIMARY KEY,
NAME VARCHAR(10),
sal DOUBLE(8,2)
)
执行此脚本,完成数据库和表的创建工作。
4.创建与数据库表对应的实体。
package com.winner.entity; /**
* Created by winner_0715 on 2016/3/23.
* student表对应的实体类
*/
public class Student { private Integer id;//最好使用包装类型
private String name;
private Double sal;//最好使用包装类型
//无参构造方法必须有
public Student() {
} public Student(Integer id, String name, Double sal) {
this.id = id;
this.name = name;
this.sal = sal;
} 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 Double getSal() {
return sal;
} public void setSal(Double sal) {
this.sal = sal;
}
}
5.在entity目录下创建StudentMapper.xml配置文件,表示表和实体的映射关系,
(位置不一定非得放在实体目录中,命名建议是"实体类名+Mapper.xml"),
相当于Hibernate中的xxx.hbm.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,
namespace的值习惯上设置成包名+映射文件名,这样就能够保证namespace的值是唯一的.
这里取映射文件的全限定名,不要.xml后缀名。
mapper标签,所以这个唯一的标识也起名为xxxxMapper,纯属为了记忆!
-->
<mapper namespace="com.winner.entity.StudentMapper">
<!--
resultMap标签:映射实体与表
type属性:表示实体全路径名
id属性:为实体与表的映射取一个任意的唯一的名字
Map标签,所以这个唯一的标识也起名为xxxMap,同样是为了记忆!
-->
<resultMap id="studentMap" type="com.winner.entity.Student">
<!--
id标签:映射主键属性
result标签:映射非主键属性
property属性:实体的属性名
column属性:表的字段名
-->
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="sal" column="sal"/>
</resultMap>
<!--
insert标签:要书写一个insert的ql语句
id属性:为insert这个sql操作取唯一的名字,可以取Dao中的对应方法名.
parameterType:要执行的dao中的方法的参数,如果是类的话,必须使用全路径类
-->
<insert id="add1">
<![CDATA[
INSERT INTO student(id,name,sal) VALUES (1,"zhangsan",2000);
]]>
</insert> <insert id="add2" parameterType="com.winner.entity.Student">
<![CDATA[
INSERT INTO student(id,name,sal) VALUES (#{id},#{name},#{sal});
]]>
</insert>
<!--
这里还可以有其他的sql语句
-->
</mapper>
6.在src目录下添加Mybatis的配置文件mybatis-config.xml,
相当于Hibernate中的hibernate.cfg.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> <!-- 加载类路径下的属性文件 -->
<properties resource="db.properties"/> <!-- 设置一个默认的连接环境信息 -->
<environments default="mysql_developer">
<environment id="mysql_developer">
<!-- mybatis使用jdbc事务管理方式 -->
<transactionManager type="JDBC"></transactionManager>
<!-- mybatis使用连接池方式来获取连接 -->
<dataSource type="POOLED">
<!-- 配置与数据库交互的4个必要属性 -->
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
<!-- 连接环境信息,取一个任意唯一的名字 -->
<environment id="oracle_developer">
<!-- mybatis使用jdbc事务管理方式 -->
<transactionManager type="jdbc"/>
<!-- mybatis使用连接池方式来获取连接 -->
<dataSource type="pooled">
<!-- 配置与数据库交互的4个必要属性 -->
<property name="driver" value="${oracle.driver}"/>
<property name="url" value="${oracle.url}"/>
<property name="username" value="${oracle.username}"/>
<property name="password" value="${oracle.password}"/>
</dataSource>
</environment>
</environments> <!-- 加载映射文件-->
<mappers>
<mapper resource="com/winner/entity/StudentMapper.xml"/>
</mappers> </configuration>
db.properties
mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://127.0.0.1:3306/mybatis
mysql.username=root
mysql.password=root oracle.driver=oracle.jdbc.driver.OracleDriver
oracle.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
oracle.username=scott
oracle.password=tiger
7.在util目录下创建MyBatisUtil.java工具类
/**
* Created by winner_0715 on 2016/3/23.
* 工具类
*/
public class MybatisUtil {
private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
private static SqlSessionFactory sqlSessionFactory;
/**
* 这个工具类加载时加载mybatis.xml配置文件,注意路径。希望类加载的时候就加载配置文件
*/
static{
try {
Reader reader = Resources.getResourceAsReader("mybatis.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 禁止外界通过new方法创建
*/
private MybatisUtil(){}
/**
* 获取SqlSession
*/
public static SqlSession getSqlSession(){
//从当前线程中获取SqlSession对象
SqlSession sqlSession = threadLocal.get();
//如果SqlSession对象为空
if(sqlSession == null){
//在SqlSessionFactory非空的情况下,获取SqlSession对象
sqlSession = sqlSessionFactory.openSession();
//将SqlSession对象与当前线程绑定在一起
threadLocal.set(sqlSession);
}
//返回SqlSession对象
return sqlSession;
}
/**
* 关闭SqlSession与当前线程分开
*/
public static void closeSqlSession(){
//从当前线程中获取SqlSession对象
SqlSession sqlSession = threadLocal.get();
//如果SqlSession对象非空
if(sqlSession != null){
//关闭SqlSession对象
sqlSession.close();
//分开当前线程与SqlSession对象的关系,目的是让GC尽早回收
threadLocal.remove();
}
} /**
* 测试
*/
public static void main(String[] args) {
Connection conn = MybatisUtil.getSqlSession().getConnection();
System.out.println(conn!=null?"连接成功":"连接失败");
} }
8.在DAO目录下创建StudentDao.java类,这里就不使用接口了,实际项目中必须使用接口.
就像在Hibernate中使用的那样,DAO调用mybatis提供的有关方法完成对数据库的操作。
public class StudentDao { public void add1() throws Exception{
SqlSession sqlSession = null;
try{
sqlSession = MybatisUtil.getSqlSession();
//事务开始(默认)
//读取StudentMapper.xml映射文件中的SQL语句
int i = sqlSession.insert("com.winner.entity.StudentMapper.add1");
System.out.println("本次操作影响了"+i+"行");
//事务提交
sqlSession.commit();
}catch(Exception e){
e.printStackTrace();
//事务回滚
sqlSession.rollback();
throw e;
}finally{
MybatisUtil.closeSqlSession();
}
} public void add2(Student student) throws Exception{
SqlSession sqlSession = null;
try{
sqlSession = MybatisUtil.getSqlSession();
//事务开始(默认)
//读取StudentMapper.xml映射文件中的SQL语句
sqlSession.insert("com.winner.entity.StudentMapper.add2",student);
//事务提交
sqlSession.commit();
}catch(Exception e){
e.printStackTrace();
//事务回滚
sqlSession.rollback();
throw e;
}finally{
MybatisUtil.closeSqlSession();
}
} public static void main(String[] args) throws Exception{
StudentDao dao = new StudentDao();
//dao.add1();
dao.add2(new Student(2,"lisi",3000d));
}
}
想看log4j日志信息的话需要log4j的jar包,然后把log4j.properties放在src下
log4j.rootLogger=debug,stdout,logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
mybatis工作流程
1.通过Reader对象读取src目录下的mybatis.xml配置文件(该文本的位置和名字可任意)
2.通过SqlSessionFactoryBuilder对象创建SqlSessionFactory对象
3.从当前线程中获取SqlSession对象
4.事务开始,在mybatis中默认
5.通过SqlSession对象读取StudentMapper.xml映射文件中的操作编号,从而读取sql语句
6.事务提交,必写
7.关闭SqlSession对象,并且分开当前线程与SqlSession对象,让GC尽早回收
初识MyBatis的更多相关文章
- 初识mybatis(二)
上篇博客我们介绍通过Java代码来创建mybatis的配置文件,港真,这种方式看起来有意思实际在开发中用的并不多,mybatis的配置还是以xml配置为主,本文我们就来看看如何通过xml文件来配置my ...
- mybatis入门--初识mybatis
初识mybatis 今天,一起来说说mybits这个框架吧.这是一个持久层的框架.之前叫做ibatis.所以,在它的代码中出现ibatis这个词的时候,不要感到惊讶.不是写错了,它确实就是这个样子的. ...
- MyBatis For .NET学习- 初识MyBatis
MyBatis的框架. Introduction MyBatis本是apache的一个开源项目iBatis,2010年这个项目由 apache software foundation迁移到了googl ...
- 初识Mybatis之工程搭建
简介:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 ...
- MyBatis学习01(初识MyBatis和CRUD操作实现)
1.初识MyBatis 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 什么是M ...
- 初识Mybatis框架,实现增删改查等操作(动态拼接和动态修改)
此第一次接触Mybatis框架确实是有点不适应,特别是刚从Hibernate框架转转型过来,那么为什么要使用Mybatis框架,Mybatis框架和Hibernate框架又有什么异同呢? 这个问题在我 ...
- 初识Mybatis框架,实现增删改查等操作
此第一次接触Mybatis框架确实是有点不适应,特别是刚从Hibernate框架转转型过来,那么为什么要使用Mybatis框架,Mybatis框架和Hibernate框架又有什么异同呢? 这个问题在我 ...
- Mybatis基础学习(一)—初识MyBatis
一.MyBatis是什么? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google co ...
- (一)初识mybatis
Mybatis 是现在很多公司都选择使用的一个ORM(Object Relational Mapping)框架,所以是值得了解和学习一番的. MyBatis 是支持定制化 SQL.存储过程以及高级映射 ...
随机推荐
- spring读取prperties配置文件(2)
接上篇,spring读取prperties配置文件(1),这一篇主要讲述spring如何用annotation的方式去读取自定义的配置文件. 这里我先定义好属性文件"user.propert ...
- 仿《雷霆战机》飞行射击手游开发--GameObject
转载请注明:http://www.cnblogs.com/thorqq/p/5646509.html 在上一篇中,我们介绍了各种游戏对象的功能及类的集成关系,现在我们来看看GameObject的源代码 ...
- ZigBee HomeAutomation分析
引用请注明出处!联系邮箱是huhao0126@163.com 本例程讲解,基于TI CC2530-2.5.1a中的HomeAutomation文件夹中的SampleLight和SampleSwitch ...
- NTT研发
2.研发标准 stead---大型机 css terasolunt---反向自动生成设计书 3.开发阶段做好设计,确定需求,测试阶段只是做产品有多差或者完成了多少需求,不是用来提高产品质量的过程
- iOS 非ARC基本内存管理系列 1-引用计数器
1.什么是内存管理 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间.比如回收一些不需要使用的对象.变量 ...
- java.imageIo给图片添加水印
最近项目在做一个商城项目, 项目上的图片要添加水印①,添加图片水印;②:添加文字水印; 一下提供下个方法,希望大家可以用得着: package com.blogs.image; import java ...
- JQuery 判断某个属性是否存在 hasAttr
$(".fengye a").each(function () { if (typeof($(this).attr("href")) != "unde ...
- DirectSound学习(二)--流式缓冲区
使用流式缓冲方式播放波形音频文件比较复杂,主要原因是在只有一个缓冲区提供给用户的前提下,这个缓冲区在提供给声卡播放数据的同是还需要用户不断的定时向其中写入数据.要注意从缓冲区这时是一个环形缓冲区,声音 ...
- linux 神器之wget
1.什么是Wget? 首页,它是网络命令中最基本的.最好用的命令之一; 文字接口网页浏览器的好工具. 它(GNU Wget)是一个非交互从网上下载的自由工具(功能).它支持http.ftp.https ...
- jQuery基础与实例
一.简介 1.什么是jQuery jQuery是一个轻量级.快速简洁的javaScript库,能让我们方便快捷的选择元素操作元素属性. 2.下载地址 3.jQuery使用方式 $("div& ...