您的位置:首页 > 编程语言 > Java开发

初识Mybatis

2017-12-09 16:56 260 查看

what’s mybatis?

JDBC

ORM

Mybatis

JDBC

我相信所有学习java编程的同学们最早接触连接数据库的工具就是JDBC(java Data Base Connectivity)。JDBC是一种典型的桥接模式,因为对于DB它只是规定了接口规范,而具体的DB厂商根据自己DB的特性进行具体的实现。

基于JDBC的数据库连接代码演示:

mport java.sql.*;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class JdbcConnectivity {

private static final Logger LOGGER = LogManager.getLogger(Connection.class);

/**
* 获取数据库连接
*
* @return Connection
*/
public static Connection getConnection() {
Connection connection = null;
try {
//1、加载驱动(mysql)
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306//test_db?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull";
String user = "root";
String password = "root";
//2、连接数据库
connection = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
LOGGER.error("连接数据库异常");
e.printStackTrace();
}
return connection;
}

/**
* 获取数据
*
* @param id
* @return User
*/
public static User getResult(String id) {
User user = new User();
Connection connection = getConnection();
PreparedStatement ps = null;
ResultSet resultSet = null;
String sql = "select name from test_tb where id=? ";
try {
//3、执行sql
//4、获得结果集
ps = connection.prepareStatement(sql);
ps.setString(1, id);
resultSet = ps.executeQuery();
//5、关系型数据转换成POJO对象
while (resultSet.next()) {
user.setId(resultSet.getString("id"));
user.setName(resultSet.getString("name"));

}
} catch (Exception e) {
LOGGER.error("获取数据异常");
} finally {
//6、关闭DB以及相关资源
close(connection,ps,resultSet);
}

return null;
}

/**
* 关闭连接以及相关资源
* @param connection
* @param preparedStatement
* @param resultSet
*/
public static void close(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {
try {
if (resultSet != null && !resultSet.isClosed())
resultSet.close();

if (preparedStatement != null && !preparedStatement.isClosed())
preparedStatement.close();

if (connection != null && !connection.isClosed())
connection.close();

} catch (SQLException e) {
e.printStackTrace();
}

}
}


使用JDBC的步骤:

1、加载驱动以及数据信息;

2、连接数据库;

3、执行sql;

4、获取结果集,并将关系型数据转换成相应的POJO对象;

5、关闭相关资源;

JDBC优缺点

优点:

灵活

性能较好

缺点:

工作量大,对编程技巧要求高:底层事务处理、数据转换、资源关闭、以及异常的捕获要求较高

ORM

ORM:Object Relational Mapping 对象关系映射,顾名思义:主要用于实现关系型数据库表数据与POJO对象之间实现映射关系。简化JDBC繁琐的过程

hibernate 是比较成熟的ORM框架,是一种全表映射的持久层框架,但是由于对SQL优化困难等原因,因此性能上很难应对大型互联网系统。(不是重点略过)

Mybatis

相比较与hibernate,Mybatis是一种半自动映射的ORM框架。因为它除了需要提供POJO、数据库表数据与POJO的映射关系之外,还需要编程同学提供SQL。也就是说编程同学控制SQL。

综上所述,Mybatis主要包括一下内容:

POJO对象;

映射文件:数据库配置映射文件、POJO与表数据映射文件;

SQL语句;

1、POJO对象

就是标准的java对象

2、映射文件

数据库配置映射文件

<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
#映射文件,包含了POJO属性与表的映射关系以及SQL语句
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>


POJO与表数据映射文件以及SQL语句

下面配置中POJO属性与表数据属性关系省略,是因为SQL中列名与POJO的属性名一致。

<?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="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>


Mybatis操作过程概述

1、程序与数据库建立关系过程



获取SqlSessionFactory实例:

String resource = "classpath:mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);


2、程序对数据库操作过程



//获取session实例
SqlSession session = sqlSessionFactory.openSession();
try {
//调用接口方法,得到结果集
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
} finally {
session.close();
}


源码下载地址:http://download.csdn.net/download/wangchuanqi1234/10152414
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis java 数据库