Mybatis


1概述

原是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache

Software Foundation 迁移到了 Google Code,随着开发团队转投Google Code 旗下, iBatis3.x正式更名为MyBatis。

MyBatis 是一款优秀的持久层框架。

MyBatis 避免了几乎所有的 JDBC 代码手动设置参数以及手动获取结果集的操作。

2特性

1)支持定制化sql,存储过程以及高级映射的优秀的持久层框架。

2)避免了几乎所有的 JDBC 代码手动设置参数以及手动获取结果集的操作。

3)MyBatis 可以使用 XML 或注解来配置和映射,将数据库中的记录映射成

Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)。

4)是一种 半自动的ORM(ORM Object Relational Mapping 对象关系映射)实现。

ORM就是将实体类对象与关系数据库创建映射关系。

3mybatis下载

Mybatis 中文官网 https://mybatis.org/mybatis-3/zh/getting-started.html

Mybatis 源码下载 https://github.com/mybatis/mybatis-3/releases

4与其它持久层技术对比

JDBC

sql夹杂在java代码中耦合性高,导致硬编码内伤。

维护不易且实际开发需求中sql有变化,频繁修改的情况多见。

代码冗长,开发效率低

Mybatis

轻量级,性能出色

SQL和java编码分开,功能边界清晰。java代码专注业务,sql语句专注数据。

开发效率略逊色hibernate,但是完全能够接受

5MyBatis 环境搭建

1)导入 MyBatis jar 包,mysql 数据库驱动包

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.4.2</version>

</dependency>

2)创建 MyBatis 全局配置文件

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<environments default="development">

<environment id="development">

<dataSource type="POOLED">

<property name="driver" value="" />

<property name="url" value="" />

<property name="username" value="" />

<property name="password" value=""/>

</dataSource>

</environment>

</environments>

</configuration>

3)创建 sql 映射文件

<?xml version="1.0" encoding="UTF-8"?>

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="接口地址">

定义 sql 语句

</mapper>

4)定义接口

在接口中定义方法

public interface UserDao{

}

Mybatis映射文件中要有两个一致:

1.namespace要有dao接口的全类名一致

2.sql语句的id要与dao接口的方法名一致

表--实体类--dao接口--映射文件

6测试MyBatis

**读取配置文件

Reader reader = Resources.getResourceAsReader("mybatis-config.xml");

创建 SqlSessionFactory

SqlSessionFactory sessionFactory = **new SqlSessionFactoryBuilder().build(reader);

创建 SqlSession

SqlSession sqlSession = sessionFactory.openSession();

获得接口代理对象

sqlSession.getMapper(接口.class);

sqlSession .close();关闭

API 接口说明

SqlSessionFactory 接口

使用 SqlSessionFactory 来创建 SqlSession,一旦创建 SqlSessionFactory 就

会在整个应用过程中始终存在。由于创建开销较大,所以没有理由去销毁再创建

它,一个应用运行中也不建议多次创建 SqlSessionFactory。

SqlSession 接口

Sqlsession 意味着创建与数据库链接会话,该接口中封装了对数据库操作的方

法,与数据库会话完成后关闭会话。

Mybatis-Dao 层 Mapper 接口化开发

Mapper 接口开发方式只需要程序员编写 Mapper 接口,由 Mybatis 框架创建接

口的动态代理对象,使用 sqlsession.getMapper(接口.class);获得代理对象.

Mapper 接口开发需要遵循以下规范:

1) Mapper.xml 文件中的 namespace 与 mapper 接口的类路径相同.

2) Mapper 接口方法名和 Mapper.xml 中定义的每个 statement 的 id 相同.

3) Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的

parameterType 的类型相同.

4) Mapper 接口方法的输出参数类型和 mapper.xml 中定义的每个 sql 的

resultType 的类型相同

7Mybatis获取参数值的两种方式

${}本质字符串拼接

#{}本质占位符赋值

Mybatis获取参数值的各种情况:

1)dao接口方法的参数为单个字面量类型

可以通过&{}和#{}以任意的字符串获取参数值,但是需要注意${}的单引号问题 ‘${}’ 其实括号里面的值无所谓,但要规范,见名知意

2)dao接口方法的参数为多个时

此时Mybatis会把这些参数放在一个map集合中,以两种方式存储

a。以arg0,arg1...为键,以参数为值

b。以param0,param1...为键,以参数为值

因此只需要通过&{}和#{}以键的方式访问值即可,但是需要注意${}的单引号问题

3)若dao接口方法的参数有多个时,可以手动将这些参数放一个map里面存储

4)mapper接口方法参数是一个实体类类型的参数

只需要通过&{}和#{}以属性的方式访问属性值即可,但是需要注意${}的单引号问题

5)使用@Param命名参数

此时Mybatis会把这些参数放在一个map集合中,以两种方式存储

a。以arg0,arg1...为键,以参数为值

b。以param0,param1...为键,以参数为值

因此只需要通过&{}和#{}以键的方式访问值即可,但是需要注意${}的单引号问题

8Mybatis的各种查询功能

1.若查询的数据只有一条

a。可以通过实体类对象接收

b。可以通过list集合接收

c。可以通过map集合接收

2.若查询的数据有多条

a。可以通过list集合接收

b。可以通过list集合接收

c。可以在dao接口的方法上添加@MapKey注解,此时就可以将每条数据转换的map集合作为值,以某个字段的值作为键,放在同一个map集合里面

注意:一定不能通过实体类对象接收,此时会抛异常TooManyResultsException

Mybatis中设置了默认的类型别名

java.lang.Integer-->int,integer

int-->_int,_integer

Map-->map

String-->string

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值