试用MyBatis框架

1.<b>下面以“MyCinema”数据库作为示范来讲解MyBatis的使用</b>

2.在项目中导入MyBatis框架jar

使用MyBatis开发数据访问层,只需要导入mybatis-3.x.x.jar和对应的JDBC驱动即可。以下使用两种方式导入相关依赖。

(1)直接导入

(2)使用Maven

<dependencies>

<!-- JDBC MySQL 驱动 -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.8</version>

</dependency>

<!-- MyBatis 核心依赖 -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.2.5</version>

</dependency>

</dependencies>

3.设置MyBatis框架的配置信息

MyBatis框架需要两种配置文件:“主配置文件”和“查询映射配置文件”。

主配置文件(mybatis.xml),用于配置“数据库会话工厂”,主要作包括:1)数据库连接(连接池)信息;2)指定其他查询映射配置文件的位置。

查询映射配置文件(CategoryMapper.xml),一般用于配置某实体类(Category.java)的CURD操作所涉及的SQL语句。

如果是Maven项目,这些配置信息都应该放在Resources目录中。

(1)创建“MyBatis主配置文件”

在“类目录”下创建名为mybatis.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.jdbc.Driver" />

<property name="url" value="jdbc:mysql://localhost:3306/MyCinema" />

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

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

</dataSource>

</environment>

</environments>

<mappers>

<mapper resource="mapper/CategoryMapper.xml" />

</mappers>

</configuration>

其中,“红色字体”部份用于配置数据库的连接信息(JDBC驱动、数据库url、用户名和密码);而“蓝色字体”部分用于指定针对实体类的查询映射配置文件的位置。

(2)创建查询映射配置文件

创建数据实体类Category.java和实体映射文件CategoryMapper.xml。

以下实体类表示电影分类,与数据库的Category表对应。

public class Category {

private int id;

private String name;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

Category的查询映射文件的结构如下所示:

<?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="mycinema.dao.CategoryMapper">

<select id="fetchById" parameterType="int" resultType="mycinema.entity.Category">

select * from Category where id=#{id}

</select>

</mapper>

每添加一个实体配置文件,就应该在主配置文件(mybatis.xml)中加入一个<mapper>元素,以告知框架要把该实体加入到映射中,详见上一节mybatis.xml配置中的蓝色字体部份。

注意点:

1)mapper元素的namespace与select元素的id共同决定了一个SQL语句的“坐标”,在MyBatis框架执行查询时,使用坐标标识所调用的SQL

2)SQL语句中的参数通过“#{参数名}”的方式声明,而参数类型需要通过select元素的parameterType来声明

3)select元素通过resultType来声明返回类型(实体对象)

4.创建MyBatis数据库会话(SqlSession)并执行查询

InputStream is = Resources.getResourceAsStream("mybatis.xml");

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);

SqlSession session = factory.openSession();

try {

Category c = (Category)session.selectOne("mycinema.dao.CategoryMapper.fetchById",1);

System.out.println(c.getName());

} finally {

session.close();

}

5.使用映射器(Mapper)接口操作SQL语句

上述的查询中,使用映射语句“mycinema.dao.CategoryMapper.fetchById”指定要执行的SQL,这种弱类型的使用方式容易出问题:缺乏编程提示和编译检查。为此,MyBatis还提供了强类型的使用方式——映射器(Mapper)方式。

实际上,MyBatis中所谓的“映射器”接口就是我们所说的“数据访问对象”(DAO)接口。

该使用方式的具体做法如下:

(1)在查询配置文件CategoryMapper.xml中,把mapper元的namespace属性指定为一个映射器接口(CategoryMapper)的完全限定类名。

<?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="mycinema.dao.CategoryMapper">

<select id="fetchById" parameterType="int" resultType="mycinema.entity.Category">

select * from Category where id = #{id}

</select>

</mapper>

(2)在映射器接口(mycinema.dao.CategoryMapper)中声明方法(fetchById),该方法的签名与配置文件的select元素匹配(方法名与select元素id相同,返回值类型和参数类型也必须对应)。

public interface CategoryMapper {

public Category fetchById(int id);

}

(3)按上设置后,我们就可以通过CategoryMapper接口实现前面的查询了:

SqlSession session = factory.openSession();

try {

CategoryMapper mapper = session.getMapper(CategoryMapper.class);

Category c = mapper.fetchById(1);

System.out.println(c.getName());

} finally {

session.close();

}

这种调用方式是通过接口动态代理来实现的,并不需要为接口添加实现类。映射器的调用方式是强类型的,符合对象化思想,不容易出错,在实际中更为常用。

时间: 2024-10-20 10:50:50

试用MyBatis框架的相关文章

Spring集成MyBatis框架

Java在写数据库查询时,我接触过四种方式: 1.纯Java代码,引用对应的数据库驱动包,自己写连接与释放逻辑(可以用连接池) 这种模式实际上性能是非常不错的,但是使用起来并不是非常方便:一是要手工为Connection做获取与释放,大量的冗余代码也容易出错:另一个是,复杂的SQL用字符串写起来简直不可维护(换行.可视长度.参数都是问题). 2.使用Spring JdbcTemplate 这个其实还是挺不错的,配置比较简单,功能丰富上比手工管理Connection要舒服多了,而且代码也比较简洁.

MyBatis框架中Mapper映射配置的使用及原理解析(七) MapperProxy,MapperProxyFactory

从上文<MyBatis框架中Mapper映射配置的使用及原理解析(六) MapperRegistry> 中我们知道DefaultSqlSession的getMapper方法,最后是通过MapperRegistry对象获得Mapper实例: public <T> T getMapper(Class<T> type, SqlSession sqlSession) { final MapperProxyFactory<T> mapperProxyFactory =

MyBatis框架(一)

MyBatis介绍: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement.手动设置参数.结果集检索等jdbc繁杂的过程代

MyBatis框架中Mapper映射配置的使用及原理解析(三) 配置篇 Configuration

从上文<MyBatis框架中Mapper映射配置的使用及原理解析(二) 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder> 我们知道XMLConfigBuilder调用parse()方法解析Mybatis配置文件,生成Configuration对象. Configuration类主要是用来存储对Mybatis的配置文件及mapper文件解析后的数据,Configuration对象会贯穿整个Mybatis的执行流程,为Mybatis的执行过程提供必要的配

MyBatis框架中Mapper映射配置的使用及原理解析(二) 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder

在 <MyBatis框架中Mapper映射配置的使用及原理解析(一) 配置与使用> 的demo中看到了SessionFactory的创建过程: SqlSessionFactory sessionFactory = null; String resource = "mybatisConfig.xml"; try { sessionFactory = new SqlSessionFactoryBuilder().build(Resources .getResourceAsRea

MyBatis框架Maven资源

<!-- MyBatis框架 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <!-- MySql数据库驱动 --> <dependency> <groupId>mysql&

mybatis框架搭建学习初步

mybatis框架搭建步骤:1. 拷贝jar到lib目录下,而且添加到工程中2. 创建mybatis-config.xml文件,配置数据库连接信息 <environments default="development"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <dataSou

MyBatis框架知识整理

MyBatis框架 一.介绍: MyBatis实际上是Ibatis3.0版本以后的持久化层框架[也就是和数据库打交道的框架]! 和数据库打交道的技术有: 原生的JDBC技术---> Spring的JdbcTemplate技术 这些工具都是提供简单的SQL语句的执行,但是和我们这里学的MyBatis框架还有些不同,框架是一整套的东西,例如事务控制,查询缓存,字段映射等等. 我们用原生JDBC操作数据库的时候都会经过: 编写sql---->预编译---->设置参数----->执行sql

Mybatis框架之动态SQL书写方式小结

动态SQL简介 动态SQL是Mybatis框架中强大特性之一.在一些组合查询页面,需要根据用户输入的查询条件生成不同的查询SQL,这在JDBC或其他相似框架中需要在代码中拼写SQL,经常容易出错,在Mybatis框架中可以解决这种问题. 使用动态SQL元素与JSTL相似,它允许我们在XML中构建不同的SQL语句.常用元素为: 判断元素:if,choose 关键字元素:where,set,trim 循环元素:foreach if元素 if元素是简单的条件判断逻辑,满足指定条件时追加if元素内的SQ