mybatis是一个基于java的持久层框架
半自动的ORM框架(Object Relationship Mapping)对象关系映射
持久化
持久化是将程序数据在持久状态和瞬时状态间转换的机制。
通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。
持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。
持久层
用来完成持久化操作的代码块
可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不破坏,在断电或者其他情况下,重启系统依然可以读到这些数据
Mybatis的一些优点
简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
提供映射标签,支持对象与数据库的orm字段关系映射
提供对象关系映射标签,支持对象关系组建维护
提供xml标签,支持编写动态sql。
开发mybatis步骤
配置mybatis 增加mysql驱动 增加mybatis驱动
1. conf.xml 数据源配置文件 配置数据库信息 和需要加载的映射文件
2. 表 -- 类 映射文件 xxMapper.xml : 增删改查标签 <select>
3. 测试类: session.selectOne("需要查询SQL的namespace.id",“SQL的参数值”)
数据源配置文件 conf.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 配置数据库信息 -->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/testjdbc?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="6666"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 加载映射文件 -->
<mapper resource="org/student/entity/StudentMapper.xml"/>
</mappers>
</configuration>
StudentMapper.xml
<?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.student.mapper.StudentMapper">
<select id="queryStudentById" resultType="org.student.entity.Student" parameterType = "String" >
select * from student where id = #{id}
</select>
</mapper>
Test.java
public class Test {
public static void main(String[] args) throws IOException {
//加载MyBatis配置文件(为了访问数据库)
Reader reader = Resources.getResourceAsReader("conf.xml");
//Mybatis中会话工厂SqlSessionFactory类可以通过加载资源文件,
//读取数据源配置sonf.xml信息,从而产生一种可以与数据库交互的会话实例SqlSession,
//会话实例SqlSession根据Mapper.xml文件中配置的sql,对数据库进行操作。
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sessionFactory.openSession();
String statement = "org.student.mapper.StudentMapper.queryStudentById";
Student student = session.selectOne(statement,"2");
System.out.println(student);
}
}