Mybatis-01-简介及入门
2017-09-27 17:15
435 查看
一.Mybatis简介
1.MyBatis 框架的历史
MyBatis 原本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月MyBatis 迁移到Github2.MyBatis框架的特点
MyBatis是一个优秀的持久层框架,它对JDBC的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等JDBC繁杂的过程代码Mybatis通过xml或注解的方式配置各种statement(statement、preparedStatemnt、CallableStatement),并通过java对象和statement中的SQL 进行映射生成最终交给数据库执行的SQL 语句,最后由mybatis框架执行SQL 并将结果映射成java对象并返回二.Mybatis框架运作流程图
三.Mybatis框架执行流程中的重要节点
1.配置文件
SqlMapConfig.xml:Mybatis的全局配置文件,配置了Mybatis的运行环境等信息mapper.xml:SQL映射文件,文件中配置了操作数据库的SQL语句,此文件需要在SqlMapConfig.xml中加载。
2.SqlSessionFactory接口
通过Mybatis环境等配置信息构造SqlSessionFactory,即会话工厂,由会话工厂创建SqlSession即会话,操作数据库通过SqlSession进行。3.Executor接口
Mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。4.MappedStatement类
MappedStatement类简介
MappedStatement是Mybatis一个底层封装类,它包装了Mybatis配置信息及SQL映射信息等。mapper.xml文件中一个SQL对应一个MappedStatement对象,SQL的id即是Mappedstatement对象的idMappedStatement类功能作用
1.MappedStatement类对操作数据库的SQL语句的输入参数进行定义,包括HashMap、基本类型、pojo、Executor等种类的参数,通过MappedStatement在执行SQL前将输入的参数对象映射至SQL中,这个过程可以类比JDBC编程中使用preparedStatement对SQL语句设置参数2.MappedStatement类对SQL语句执行数据库后的输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过MappedStatement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于JDBC编程中对结果的解析处理过程
四.Mybatis的简单使用
1.搭建环境
1.创建一个maven项目,在pom.xml文件中加入对mybatis的依赖<properties> <mybatis.version>3.2.8</mybatis.version> eae3 <mybatis.spring.version>1.2.2</mybatis.spring.version> <mybatis.paginator.version>1.2.15</mybatis.paginator.version> </properties> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <dependency> <groupId>com.github.miemiedev</groupId> <artifactId>mybatis-paginator</artifactId> <version>${mybatis.paginator.version}</version> </dependency> </dependencies>
再加入数据库mysql和数据库链接池的依赖包
<mysql.version>5.1.32</mysql.version> <druid.version>1.0.9</druid.version> <!-- MySql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${pagehelper.version}</version> </dependency> <!-- 连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency>
2.创建一个数据库并准备一些数据
2.创建并配置项目的配置文件
项目结构如图所示
在resource目录下分别创建日志文件log4j.properties,写有数据库连接信息的文件jdbc.properties,和Mybatis的全局配置文件sqlMapConfig.xml
sqlMapConfig.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> <!-- 1.将jdbc连接数据库的相关配置加载进配置文件 --> <properties resource="jdbc.properties"/> <!-- 2.设置Mybatis的运行环境 --> <environments default="development"> <environment id="development"> <!-- 2.1使用jdbc事务管理 --> <transactionManager type="JDBC" /> <!-- 2.2配置数据库连接池 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="jdbc:mysql://localhost:3306/babasport?characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="***" /> </dataSource> </environment> </environments> <!-- 3.配置Mybatis映射文件的位置 --> <mappers> <mapper resource="BbsEmployeeMapper.xml"></mapper> </mappers> </configuration>
关于映射文件的位置信息:resource属性指的是项目的根目录,我的BbsEmployeeMapper.xml映射文件没有放在根目录下,而是放在com.sandking.mybatis.mapper包下,所以我将映射文件所在的目录设置为resource类型的目录
设置目录为resource类型的目录(即目录下的文件直接放在根目录下)
3.创建持久化类(BbsEmployee)和映射文件(BbsEmployeeMapper.xml)
3.1 持久化类BbsEmployee(省略了get,set方法)public class BbsEmployee { private String username; private String password; private String degree; private String email; private Boolean gender; private String imgUrl; private String phone; private String realName; private String school; private Boolean isDel; ......
3.2 配置映射文件
<?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="com.sandking.mybatis.mapper.BbsEmployeeMapper" > <!-- 设置查询配置--> <select id="queryTest" parameterType="String" resultType="com.sandking.mybatis.pojo.BbsEmployee"> SELECT * FROM `bbs_employee` WHERE username = #{username} </select> </mapper>
1.mapper.xml文件中一个SQL对应一个MappedStatement对象,SQL的id即是Mappedstatement对象的id
2.parameterType属性用来声明输入参数的类型
3.resultTypey属性用来声明输出结果的类型,如果是持久化类,则填写其全路径
4.#{ }是输入参数的占位符,相当于JDBC中的PreparedStatement类编程中的 ? 占位符
4.编写测试程序
public class BbsDao { private SqlSessionFactory sqlSessionFactory = null; //加载配置文件,在对数据库的查询操作执行前执行 @Before public void init() throws IOException { SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); InputStream inputStream = org.apache.ibatis.io.Resources.getResourceAsStream("SqlMapConfig.xml"); this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); } @Test public void testQuery(){ SqlSession sqlSession = sqlSessionFactory.openSession(); //selectOne方法查询一条数据 //1.传入sql语句对应的id //2.传入查询参数 BbsEmployee bbsEmployee = sqlSession.selectOne("queryTest","admin"); System.out.println(bbsEmployee.getUsername); sqlSession.close(); } }
查询结果:
从控制台可以看到Mybatis的发出的SQL语句,查询参数,查询结果数量(Total:1)
相关文章推荐
- Mybatis入门之简介
- 【Mybatis】(一)简介及入门
- iOS UICollectionView 入门 01 简介
- 大数据入门-基础篇01-hadoop框架简介
- MyBatis入门(一) -- 简介
- Java泛型01 : 泛型简介、泛型由来、入门示例和其他说明
- iReport专题学习之入门简介01
- 【MyBatis】第一章:MyBatis的简介和入门使用
- Mybatis入门到精通-Mybatis简介
- mybatis系列-简介以及入门(一)
- WebRTC 入门 01 简介 II
- mybatis入门基础(一)JDBC的简介以及Mybatis的入门程序
- Maven战笔记 - 01 简介、安装和配置、入门、坐标和依赖、仓库
- MyBatis学习总结_01_MyBatis快速入门
- Mybatis-01-入门
- 01_MyBatis_简介_第一个MyBatis程序
- 01 Mybatis应用篇---Mybatis入门
- MyBatis 学习总结 01 快速入门
- 01 AppCan入门学习之项目开发简介与打包
- WebRTC 入门 01 简介 I