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的更多相关文章

  1. 初识mybatis(二)

    上篇博客我们介绍通过Java代码来创建mybatis的配置文件,港真,这种方式看起来有意思实际在开发中用的并不多,mybatis的配置还是以xml配置为主,本文我们就来看看如何通过xml文件来配置my ...

  2. mybatis入门--初识mybatis

    初识mybatis 今天,一起来说说mybits这个框架吧.这是一个持久层的框架.之前叫做ibatis.所以,在它的代码中出现ibatis这个词的时候,不要感到惊讶.不是写错了,它确实就是这个样子的. ...

  3. MyBatis For .NET学习- 初识MyBatis

    MyBatis的框架. Introduction MyBatis本是apache的一个开源项目iBatis,2010年这个项目由 apache software foundation迁移到了googl ...

  4. 初识Mybatis之工程搭建

    简介:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 ...

  5. MyBatis学习01(初识MyBatis和CRUD操作实现)

    1.初识MyBatis 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 什么是M ...

  6. 初识Mybatis框架,实现增删改查等操作(动态拼接和动态修改)

    此第一次接触Mybatis框架确实是有点不适应,特别是刚从Hibernate框架转转型过来,那么为什么要使用Mybatis框架,Mybatis框架和Hibernate框架又有什么异同呢? 这个问题在我 ...

  7. 初识Mybatis框架,实现增删改查等操作

    此第一次接触Mybatis框架确实是有点不适应,特别是刚从Hibernate框架转转型过来,那么为什么要使用Mybatis框架,Mybatis框架和Hibernate框架又有什么异同呢? 这个问题在我 ...

  8. Mybatis基础学习(一)—初识MyBatis

    一.MyBatis是什么?      MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google co ...

  9. (一)初识mybatis

    Mybatis 是现在很多公司都选择使用的一个ORM(Object Relational Mapping)框架,所以是值得了解和学习一番的. MyBatis 是支持定制化 SQL.存储过程以及高级映射 ...

随机推荐

  1. 分布式PostGIS系列【1】— 概述

    一.Postgresql 分布式技术简介 二.分布式技术相关概念 三.分布式 Postgresql解决方案 四.相关资料与参考文献

  2. qml实现自定义标题栏按钮

    自定义的标题栏按钮是由Rectangle来实现的,在Rectangle中需要4张图片,分别在鼠标进入按钮区.鼠标离开按钮区(正常状态下).鼠标按下和鼠标释放时所加载的图片.下面是实现自定义按钮的代码( ...

  3. Java中的队列:java.util.Queue接口

    队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作. Queue接口与List.Set同一级别,都是继承了Collection接口.Linked ...

  4. ng-src作用

    ... <ul class="phones"> <li ng-repeat="phone in $ctrl.phones | filter:$ctrl. ...

  5. position containing block原点

    如果元素有属性 'position:absolute',containing block 由最近的 position 不是 static 的祖先建立,按下面的步骤:        1.如果祖先是块级元 ...

  6. [转]Excel生成批量SQL语句,处理大量数据的好办法

    当有大量重复体力工作写入或修改数据到数据库中时,可以 第一,将Excel数据整理好了之后,通过SQL的导入功能直接导进数据库,但是得保证数据库字段和Excel的字段一致. 第二,通过Excel来生成对 ...

  7. Web性能压力测试工具之Siege详解

    PS:Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力.可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进 ...

  8. jdbc学习(一)——SqlServer、Oracle和MySQL

    一.jdbc介绍 jdbc全称:java数据库连接(Java Database Connectivity),是sun公司定义的一套访问数据库的规范(接口和类,由各种数据库公司进行实现),主要放在jav ...

  9. java 中的this关键字的几种用法

    转自:http://blog.csdn.net/anmei2010/article/details/4091227 1.     当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在 ...

  10. 《C和指针》 读书笔记 -- 第9章 字符串、字符和字节

    1.字符串以NUL结尾,但字符串长度不包括NUl字节. 2.复制字符串 char *strcpy(char *dst,char const *src); 3.连接字符串 char *strcat(ch ...