MyBatis框架
MyBatis是一个优秀的数据持久层框架,在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。其封装性要低于Hibernate,性能优秀,并且小巧、简单易学,现在应用也越来越广泛。
数据持久化概念
数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。例如,文件的存储、数据的读取等都是数据持久化操作。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。
MyBatis框架简介
MyBatis是一个开源的数据持久层框架。它内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置。这样做的好处是将SQL与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改SQL。
MyBatis的前身是iBatis,本身是Apache的一个开源项目,2010年这个项目有Apache Software Foundation迁移到了Google Code,并改名为MyBatis。2013年迁移到Github。
ORM介绍
ORM(Object/Relational Mapping)即对象/关系映射,是一种数据持久化技术。它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过JavaBean对象去操作数据库表中的数据。
在实际开发中,程序员使用面向对象的技术操作数据,而当存储数据时,使用的确实关系型数据库,这样造成了很多不便。ORM在对象模型和关系数据库的表之间建立了一座桥梁。有了ORM,程序员就不需要再使用SQL语句操作数据库中的表,使用API直接操作JavaBean对象就可以实现数据的存储、查询、更改和删除等操作。MyBatis通过简单的XML或注解进行配置和原始映射,将实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。
使用MyBatis访问数据库的具体步骤
1.导入MyBatis的jar包。
2.编写mybatis-config配置文件。
a).配置setting。
b).设置实体类的别名。
c).配置数据源。
1.配置事务的实现方式。
2.配置datasource。
d).配置mapper映射文件。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 3 <configuration> 4 <settings> 5 <setting name="logImpl" value="LOG4J"/> 6 </settings> 7 <typeAliases> 8 <package name="pojo"/> 9 </typeAliases> 10 <environments default="demo"> 11 <environment id="demo"> 12 <transactionManager type="JDBC" /> 13 <dataSource type="POOLED"> 14 <property name="driver" value="com.mysql.jdbc.Driver"/> 15 <property name="url" value="jdbc:mysql://localhost:3306/smbms?charEncoding=utf-8"/> 16 <property name="username" value="root"/> 17 <property name="password" value="root"/> 18 </dataSource> 19 </environment> 20 </environments> 21 <mappers> 22 <mapper resource="mapper/UserMapper.xml" /> 23 </mappers> 24 </configuration>
3.创建映射文件并在映射文件里面编写sql语句。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="dao.UserDao"> 4 <select id="getAllUser" resultType="User"> 5 select * from smbms_user 6 </select> 7 </mapper>
4.创建测试类测试,通过SqlSessionFactory获得sqlsession。
MyBatis的优缺点
优点:
1).与JDBC相比,减少了50%以上的代码量。
2).MyBatis是最简单的持久化框架,小巧并且简单易学。
3).MyBatis箱单灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并且可重用。
4).提供XML标签,支持编写动态SQL语句。
5).提供映射标签,支持对象与数据库的ORM字段关系映射。
缺点:
1).SQL语句的编写工作量较大,对开发人员编写SQL语句的功底有一定要求。
2).SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
适用场合:
MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。适用于对性能的要求很高,或者需求变化较多的项目。