700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Mybatis的入门到精通这一篇文章就够了

Mybatis的入门到精通这一篇文章就够了

时间:2018-09-05 09:17:33

相关推荐

Mybatis的入门到精通这一篇文章就够了

Mybatis的产生

idea 的配置idea当中配置好maven工具1Idea当中配置自动编译Mybatis是什么?Mybatis的执行原理图Mybatis的入门Demo对象的详解Resources对象SqlSessionFactoryBuildSqlSessionFactorySqlSession对象xxxMapper.xml文件的详解面向接口发开(应用)准备数据引入依赖核心配置文件引入xxxMapper.xml创建接口文件测试

原生JDBC访问数据库

数据库的连接,使用就创建,不使用就立即释放,对数据库进行频繁的开启和释放,造成了 数据库的资源浪费,并且影响了性能

.设想:使用数据库连接池管理数据库连接

将sql语句硬编码到 java 代码中,如果sql语句被修改, 需要重新编译 java 代码,不利于系统维护

设想:将 sql 语句配置在 xml 文件中,即使 sql 变化,不需要对 java 代码进行重新编译

向 prepareStatement 中设置参数,对占位符位置和设置参数值,硬编码在 java 代码中,不利于系统维护

设想:将 sql 语句及占位符和参数全部配置在 xml 文件中

从 resultSet 中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护

设想:将查询的结果集,自动地映射成 java 对象

idea 的配置

idea当中配置好maven工具

1Idea当中配置自动编译

什么是Mybatis框架

idea 的配置idea当中配置好maven工具1Idea当中配置自动编译Mybatis是什么?Mybatis的执行原理图Mybatis的入门Demo对象的详解Resources对象SqlSessionFactoryBuildSqlSessionFactorySqlSession对象xxxMapper.xml文件的详解面向接口发开(应用)准备数据引入依赖核心配置文件引入xxxMapper.xml创建接口文件测试

Mybatis是什么?

mybatis 是一个持久层框架,是 Apache 下的顶级项目。mybatis 刚开始由 googlecode 托管,再后来托管到 GitHub下让程序员将主要精力放在 sql 上,通过 mybatis 提供的映射方式,自由灵活地(半自动化,大部分由程序员编写 sql)生成满足需求的 sql 语句mybatis 可以将我们向 prepareStatement 输入参数自动进行映射(输入映射),将查询结果集灵活映射成 java 对象。(输出映射

Mybatis的执行原理图

Mybatis的入门Demo

步骤:

准备资源: 数据库 test /表:

对应的实体类: implements Serializable

序列化:对象的信息以二进制的形式保存数据。没有实现 该接口, 不支持序列化

反序列化: 将二进制信息转换成对象引入相关依赖:

Mybatis核心依赖:

<!--mybaits--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.3</version></dependency>

Mysql: 驱动包:

Junit:

Log4j: 日志的记录:

3. 引入Mybatis的核心配置文件: 官网copy。

4. 定义xxxMapper.xml文件。 定义了sql语句

5. 测试

读取核心配置文件。 获得一个输入流。

B:创建一个工厂。 生产对象

C:获得一个SqlSession对象: 类似于Connection 对象。

D:操作 CRUD操作。

E: 释放资源

对象的详解

Resources对象

该对象资源对象,该对象所属的包: ibatis包当中。 该对象能够读取类路径(classes)目录下的资源,获得一个输入流。

SqlSessionFactoryBuild

工厂对象构建者:

获得: new SqlSessionFactoryBuild();

方法: build(inputStream );----->返回一个对象: 工厂对象

作用: 能够根据配置文件信息获得一个工厂对象。

SqlSessionFactory

特点:

工厂对象是一个重量级别的对象。 重量级对象, 对象的创建和对象的销毁都需要消耗很多资源。

工厂对象在一个工程当中只需要一个就可以。 所以工厂在创建完毕之后, 不需要关闭。 生命周期和项目周期一样长。

作用: 生产SqlSession对象:

方法:

openSession();获得一个SqlSession对象, 获得该对象不能自动提交事务。 需要手动调用commit方法进行事务的提交。 rollback事务的回滚操作。

openSession(true); 获得sqlSession对象能够自动进行事务的提交和回滚。

SqlSession对象

对象是一个会话对象。 类似于jdbc当中 Connection对象。 能够进行事务的提交和回滚。

该对象一个线程对应一个对象, 所以该对象不能定义全局对象。 不安全~ 使用完毕之后关闭。

对象能够完成CRUD操作:

selectOne()

selectList();

Insert();

Delete();

Update();

xxxMapper.xml文件的详解

xxxMapper.xml文件当中定义了sql语句:

常用的标签:

Select ,insert , delete ,update标签。

常用属性:

<select id="findStudent" parameterType="java.lang.Integer" resultType="com.offcn.pojo.Student" >select * from Student where id=#{id}</select>

面向接口发开(应用)

开发步骤:

(1)引入依赖:

(2)引入配置文件: SqlMapConfig.xml

(3)编写xxxMapper.xml

(4)编写对应接口文件

(5)Mybatis自动生成接口的实现类: (代理模式)

(6)测试

准备数据

Test ----> teacher 表: 准备对应的实体类:

引入依赖

核心配置文件

引入xxxMapper.xml

<mapper namespace="com.offcn.mapper.TeacherMapper"><!-- Teacher findTeacherById(Integer id); --><select id="findTeacherById" parameterType="int" resultType="teacher">select * from teacher where id=#{id}</select></mapper>

创建接口文件

public interface TeacherMapper {/*** 根据id进行查询:* @param id* @return teacher 老师对象:*/Teacher findTeacherById(Integer id);}

测试

@Testpublic void test() throws Exception{//获得一个会话对象: 给定一个true,链接对象能够自动提交事务SqlSession sqlSession = factory.openSession(true);//就是获得了TeacherMapper接口的实现类: (动态代理模式)// mapper 所属的类型: .MapperProxy xxxProxy proxy class// proxy Class is interface implementsTeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);//System.out.println(mapper);Teacher teacher = mapper.findTeacherById(10086);System.out.println(teacher);sqlSession.close();}

接口开发: 接口需要和xxxMapper.xml文件需要进行绑定:

(1)xxxMapper.xml当中的namespace必须制定接口的全限定类名。

(2)配置文件的名称和接口的文件的名称保持一致。存放在同一个目录下。

TeacherMapper.xml TeacherMapper

(3)标签的id 必须和方法名称保持一致。 输入型参数和方法的形式参数保持一致。

方法的返回值和标签的结果类型保持一致。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。