Java框架篇---Mybatis|Java框架篇---Mybatis 入门
作者:偶my耶
原文地址:http://www.cnblogs.com/oumyye/
文章图片
Mybatis 入门
一、Mybatis介绍
--
MyBatis是一款一流的支持自定义SQL、存储过程和高级映射的持久化框架。MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果。MyBatis能够使用简单的XML格式或者注解进行来配置,能够映射基本数据元素、Map接口和POJOs(普通java对象)到数据库中的记录。
二、MyBatis工作流程 (1)加载配置并初始化
- 触发条件:加载配置文件
- 配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
- 触发条件:调用Mybatis提供的API
- 传入参数:为SQL的ID和传入参数对象
- 处理过程:将请求传递给下层的请求处理层进行处理。
- 传入参数:为SQL的ID和传入参数对象
- 处理过程:
(A)根据SQL的ID查找对应的MappedStatement对象。
(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。
(C)获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。
(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
(E)释放连接资源。
orm工具的基本思想
无论是用过的
hibernate
,mybatis
,你都可以法相他们有一个共同点:- 从配置文件(通常是XML配置文件中)得到
sessionfactory
. - 由
sessionfactory
产生session
- 在
session
中完成对数据的增删改查和事务提交等. - 在用完之后关闭
session
。 - 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。
文章图片
功能架构
Mybatis的功能架构分为三层:
- API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
- 数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
- 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
文章图片
添加驱动包
下面进行快速入门:
目录如下:
文章图片
目录
实体类User
package com.oumyye.model;
public class User {
private String id;
private String name;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
映射文件
UserMapping.xml
select * from user where id=#{id}
资源文件
mybatis.xml
测试类:
package test;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.oumyye.model.User;
public class Tests {
@Test
public void test(){
String resource = "mybatis.xml";
//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = Tests.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的标识字符串,
* com.oumyye.mapping.UserMapping是userMapper.xml文件中mapper标签的namespace属性的值,
* getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
String statement = "com.oumyye.mapping.UserMapping.getUser";
//映射sql的标识字符串 //执行查询返回一个唯一user对象的sql
User user = session.selectOne(statement, "1123");
System.out.println(user.toString());
}
}
结果:
文章图片
结果
推荐阅读
- 嵌入式|嵌入式课程设计第一篇之OLED与温湿度模块
- java|一文弄懂 Spring boot 启动流程
- SpringBoot篇|Spring Boot启动过程
- javaWeb-HTML
- Flex 布局教程(语法篇)
- Java基础|spring/spring boot 自定义日志注解输出请求参数和结果
- 图解Java中插入排序算法的原理与实现
- 开源交流丨批流一体数据集成框架ChunJun数据传输模块详解分享
- Java多线程编程综合案例详解
- 读书方法分享