MyBatis 官方文档:mybatis – MyBatis 3 | 简介
我们安装好数据库之后,我们的应用程序也是不能直接使用数据库的,必须要通过相应的数据库驱动程序,通过驱动程序去和数据库打交道。MyBatis 是一个开源、轻量级的数据持久化框架,是 JDBC 和 Hibernate 的替代方案。 内部封装了 JDBC,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,开发者只需要关注 SQL 语句本身。MyBatis 支持定制化 SQL、存储过程以及高级映射,可以在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。和 Hibernate 相比,MyBatis 封装性低于Hibernate,但性能优秀、小巧、简单易学、应用广泛。和 JDBC 相比,MyBatis 减少了 50% 以上的代码量,并且满足高并发和高响应的要求。
优点
- MyBatis 是免费且开源的。
- 与 JDBC 相比,减少了 50% 以上的代码量。
- MyBatis 是最简单的持久化框架,小巧并且简单易学。
- MyBatis 相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL 写在 XML 中,和程序逻辑代码分离,降低耦合度,便于同一管理和优化,提高了代码的可重用性。
- 提供 XML 标签,支持编写动态 SQL 语句。
- 提供映射标签,支持对象与数据库的 ORM 字段关系映射。
- 支持存储过程。MyBatis 以存储过程的形式封装 SQL,可以将业务逻辑保留在数据库之外,增强应用程序的可移植性、更易于部署和测试。
缺点
- 编写 SQL 语句工作量较大,对开发人员编写 SQL 语句的功底有一定要求。
- SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
使用场景
MyBatis 专注于 SQL 本身,是一个足够灵活的 DAO 层解决方案。适用于性能要求高,且需求变化较多的项目,如互联网项目。
举个实例
步骤:
0.创建student表(id, name, tel, age)
1.新建maven项目
2.修改pom.xml
1)加入依赖(mybatis依赖、mysql驱动、junity)
<!-- mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-ehcache</artifactId>
<version>3.5.1</version>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-mxj-db-files</artifactId>
<version>5.0.12</version>
</dependency>
2)在<build>中加入资源插件
3.创建实体类Student。定义属性,属性名和列表名保持一致。
4.创建Dao接口,定义操作数据库的方法。
5.创建xml文件(mapper)文件,其中写sql语句。mybatis提倡将sql语句和Java代码分开,在独立文件中写sql语句。
mapper文件:和dao接口在同一目录,一个表一个mapper文件。
<?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="selectStudentById" resultType="com.bjpowernode.domain.Student">
select id,name,email,age,from student where id=128
</select>
</mapper>
·http://mybatis.org/dtd/mybatis-3-mapper.dtd为约束文件,定义和限制了当前文件中可以使用的标签和属性,以及标签出现的顺序,比如在本文件中,像<table><span>这种标签,mysql是不认识的。·mapper是根标签,其中namespace非常重要,必须不为空,而且要有唯一性。一般可以使用接口的全限定名称。 ·在mapper里面可以写<insert>,<update>,<delete>,<select>等标签。<update>里面是sql的update语句,其他一样。 ·标签中的id是这些sql语句的唯一标识,推荐使用dao接口中的一个方法名。 ·resultType:告诉mybatis,执行sql语句要把数据赋值给哪个类型的java对象。resultType的值使用java对象的全限定名称。例如“com.bjpowernode.domain.Student” 。mybatis会把查询结果转换成student对象,由框架通过java反射机制创建student对象,然后将同名的列赋值给student对象同名的属性。
6.创建mybatis主配置文件(xml,核心配置文件,仅有一个,放在resources目录下,包括获取数据库连接实例的数据源以及决定事务作用域和控制方式的事务管理器)
1)定义创建连接实例的数据源(DataSource)对象
2)指定其他mapper文件的位置
<?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>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
·其中,和mapper一样,http://mybatis.org/dtd/mybatis-3-config.dtd为约束文件,定义和限制了当前文件中可以使用的标签和属性。
·dataSource
7.创建测试的内容
使用main方法测试mybatis访问数据库
也可以使用junit访问数据库