mybatis

1.什么是mybatis?

Mybatis是一个优秀的持久层框架,他对jdbc(要回顾)的操作数据库的过程进行了封装,使开发者只需要关注SQL本身,而不需要去花费精力去处理注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc复杂的过程代码。

(1).mybatis-config.xml是Mybatis的核心配置文件,通过其中的配置可以生成SqlSessionFactory,也就是SqlSession工厂。(工厂模式)

(2).基于SqlSessionFactory可以生成SqlSession对象。

(3).SqlSessions是一个既可以发送SQL去执行,并返回结果,类似于JDBC中的Connection对象,也是Mybatis中至关重要的一个对象。

(4).Executor是SqlSession底层的对象,用于执行SQL语句。

(5).MapperStatement对象也是SqlSession底层的对象,用于接收输入映射(SQL语句中的参数),以及做输出映射(即将SQL查询的结果映射成相应的结果)

2.Mybatis快速入门。

(1).准备数据,创建库和表(略)

(2).导入所需要的jar包(junit、mysql、mybatis、log4j)

在pom.xml中引入相关依赖即可:




junit
junit
4.9



mysql
mysql-connector-java
5.1.32



org.mybatis
mybatis
3.2.8



org.slf4j
slf4j-log4j12
1.6.4

(3).在resource目录下添加mybatis-config.xml文件

文件头信息:


PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
(4).mybatis-config的详细配置信息如下:
























(5)编写EmpMapper.xml文件

头信息如下:


PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

详细信息如下:

  

(6).通过工厂模式执行sql语句的代码如下:

1.读取mybatis-config.xml的核心配置文件

InputStream in = Resources.getResourceAsStream("mybatis-config.xml");

2.根据配置文件获取一个SqlSessionFactory工厂对象

SqlSessionFactory fac = new SqlSessionFactoryBuilder().build(In);

3.通过工厂获取一个SqlSession对象

SqlSession session = fac.openSession();

//4.通过namespace+id找到要执行的sql语句并执行sql语句
List list = session
.selectList("EmpMapper.findAll");

5.输出结果

优化:使用mapper接口开发。

开发步骤:

1.创建一个接口,接口的全限定类名要与mapper文件的namespace值一样。

2.在接口中提供方法,方法名要与mapper文件中sql标签上的id值一致。

3.mapper接口中方法接收的参数类型要和mapper.xml中的sql语句接收的参数类型相同。

4.接口方法中的返回值类型和sql标签上的resultTyype的类型相同(如果方法返回值是集合,resultType只需要指定集合中的泛型)。

5.创建测试类:

1.读取mybatis-config.xml的核心配置文件

InputStream in = Resources.getResourceAsStream("mybatis-config.xml");

2.根据配置文件获取一个SqlSessionFactory工厂对象

SqlSessionFactory fac = new SqlSessionFactoryBuilder().build(In);

3.通过工厂获取一个SqlSession对象

SqlSession session = fac.openSession();

4.获取Mapper接口对象

EmpMapper map = session.getMapper("EmpMapper.class");

5.调用接口对象的方法进行查询

List list = map.findAll();

6.输出结果

你可能感兴趣的:(mybatis)