初识Mybatis
2017-12-09 16:56
260 查看
what’s mybatis?
JDBCORM
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
- Mybatis学习笔记-初识
- 初识Spring+SpringMVC+MyBatis框架(三)---spring-mybatis.xml,AddMapping.xml
- 初识Mybatis-Spring
- 初识 MyBatis 一
- MyBatis 初识
- 初识Mybatis(二)MyBatis框架搭建
- MyBatis入门1--初识Mybatis
- mybatis 初识2
- Mybatis基础学习(一)—初识MyBatis
- 初识Mybatis
- MyBatis一对一映射初识教程
- MyBatis初识
- MyBatis3框架学习(1)----mybaits初识和第一个helloworld
- Mybatis初识
- 初识Mybatis(五)之输入映射和输出映射
- 初识MyBatis-Fitst Project
- MyBatis学习(一)之MyBatis初识
- 【MyBatis框架点滴】——初识+环境搭建
- 初识Mybatis整合______整合教程(Spring+springMVC+Mybatis)