码迷,mamicode.com
首页 > 其他好文 > 详细

试用MyBatis框架

时间:2017-12-12 01:06:42      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:tor   mybatis   man   常用   actor   语句   images   分类   string   

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();

}

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

试用MyBatis框架

标签:tor   mybatis   man   常用   actor   语句   images   分类   string   

原文地址:http://www.cnblogs.com/adolphs/p/8025578.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!