大纲摘要:
1、mybatis的介绍
2、Mybatis的入门
a) 使用jdbc操作数据库存在的问题
b) Mybatis的架构
c) Mybatis的入门程序
3、Dao的开发方法
a) 原始dao的开发方法——由ibatis遗留下来的
b) mapper动态代理方式
4、SqlMapConfig.xml文件说明
一、mybatis概述
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
2013年11月迁移到Github。 MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,
而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,
并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
是一个不完全的orm框架
根据经典的凡技术必登其官网的结论,官网文档很有必要参阅:http://www.mybatis.org/mybatis-3/zh/index.html
二、mybatis入门
【更新】 问题总结
1、 在创建连接时,存在硬编码
配置文件(全局配置文件)
2、 在执行statement时存在硬编码
配置文件(映射文件)
3、 频繁的开启和关闭数据库连接,会造成数据库性能下降。
数据库连接池(全局配置文件)
很多硬编码,把程序写死了!
1.mybatis架构
详细架构请参见:http://blog.csdn.net/luanlouis/article/details/40422941
//SqlSession本身只是一个接口,它依靠executor进行执行增删改查操作
三.入门程序
导包:在github上下载mybatis,下载地址:
https://github.com/mybatis/mybatis-3/releases
包的结构如下:
导入的包如下图所示:
引入核心jar包以及lib目录的下的依赖包
引入Mysql驱动包(持久层框架需要连接数据库都必须 必须导入驱动包!!!)
引入junit包(eclipse引入方法见另外一篇随笔)
创建核心配置文件——(全局配置文件)
新建一个与src同级的 source folder( maven的目录结构) 新建 SqlMapConfig.xml (约定大于配置,尽量不要修改名称)
(实际开发时会与spring进行整合,配置文件会有改动)
<?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>
<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理-->
<transactionManager type="JDBC" />
<!-- 数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
</configuration>
//ps:每次新建xml文件,第一件事应该是引入约束
引入log4j.properties——这是从官方文档中PDF中拿的(官方文档的查阅有待加强)
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
创建POJO类 User.java
package cn.pojo; import java.util.Date; public class User { private int id; private String username;// 用户姓名 private String sex;// 性别 private Date birthday;// 生日 private String address;// 地址 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [> sex + ", birthday=" + birthday + ", address=" + address + "]"; } }