myBatis 3 配置

原文链接:http://www.raistudies.com/mybatis/configuring-mybatis-3/

MyBatis 是一个非常流行的数据持久层框架,它支持Java 和 .Net 语言。MyBatis 提供了高效的代码方式,从而大大减少了数据库操作代码的编写。

本教程将一步步引导你对Mybatis 进行相关配置。

Mybatis 3 支持基于xml 文件的配置,同时也支持基于注解(Annotation)的配置,但是使用xml 进行配置将会让你真正体会到MyBatis 的强大威力。

本教程我们只演示 MyBatis 的xml 配置过程。


相关工具:

1、MyBatis 3.0.4

2、MySql Java Connector 5.1


相关Jar 包:

1、commons-logging-1.1.1.jar

2、mybatis-3.0.4.jar

3、mysql-connector-java-5.1.13-bin.jar


本教程将通过MyBatis 将POJO 对象存入数据库。首先、创建数据库

CREATE TABLE Product(id int primary key, brand varchar(20),
model varchar(20), name varchar(30));


第二步、创建 Product 类,并映射到数据库中的 Product 表

package com.raistudies.domain;

import java.io.Serializable;

public class Product implements Serializable{

    private static final long serialVersionUID = -1900054678340682193L;

    private long id;
    private String brand;
    private String model;
    private String name;
    // Getter and setter are removed to make the short

}

MyBatis 3 包含2种类型的配置文件

基本环境配置文件:一个项目中只有一个基本环境配置文件,它包含了多种配置信息,包括数据库链接、驱动、连接池等等。

映射文件:MyBatis框架下的项目,可以包含多个映射文件。每个映射文件都对 Java 接口中定义的相关服务 进行了配置。


下面的例子中,将会包含以上两种配置文件:环境配置文件、映射配置文件

首先是环境配置文件:

<?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>
    <settings>
        <setting name="lazyLoadingEnabled" value="false" />
    </settings>

    <typeAliases>
        <typeAlias type="com.raistudies.domain.Product" alias="product"/>
    </typeAliases>

    <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/test"/>
                <property name="username" value="root"/>
                <property name="password" value="pass"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/raistudies/services/ProductServices.xml"/>
    </mappers>

</configuration>

<settings />: 用于指定整个 MyBatis 程序中的全局配置。本例中仅仅对“ lazyLoadingEnabled” 属性进行了设置

<typeAliases>: 使用该标签,我们可以对自定义的Class 设置别名,以便在MyBatis 的其他配置文件中调用

<environments />: 设置数据库相关信息。可以配置多个<environment>,MyBatis 一次只会应用其中的一个<environment>配置信息,因此可以通过<environments />标签上的"default" 属性指定默认使用的<environment>配置

<mappers>: 指定包含映射信息的xml 文件所在的路径。可以指定多个xml 文件


下一步:在接口中定义Service

创建一个接口,定义我们想要提供的服务。下面,我们为Product 类定义了一个接口,其中只包含一个 "svae" 方法

package com.raistudies.services;

import com.raistudies.domain.Product;

public interface ProductServices {
    public void save(Product product);
}

映射文件的配置信息

<?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="com.raistudies.services.ProductServices">

        <insert id="save" parameterType="product">
            INSERT INTO Product (id,brand,model,name)
            VALUE ( #{id}, #{brand}, #{model}, #{name} )
        </insert>

    </mapper>
<mapper>: 为相关服务定义了SQL 语句, "namespace"属性定义了将要映射的接口

<insert>: 定义了操作类型是insert。"id" 属性指定了方法名,"parameterType"属性则限制了方法将要接收的参数类型。这里我们使用了Product 类的别名。 #{id} :程序将会把 Product 类的"id"属性作为参数传递给SQL 语句并执行。


创建MyBatis Session 并使用 Product Service

下面,我们创建 MyBatis 的一个 Session ,然后使用 ProductServices 接口的 save() 方法将 Product 对象保存到数据库

package com.raistudies.runner;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.raistudies.domain.Product;
import com.raistudies.services.ProductServices;

public class AppTester {
    private static SqlSessionFactory sessionFac = null;
    private static Reader reader;
    private static String CONFIGURATION_FILE = "sqlmap-config.xml";

    static{
        try {
            reader = Resources.getResourceAsReader(CONFIGURATION_FILE);
            sessionFac = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
        e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        SqlSession session = sessionFac.openSession();
        try {
            ProductServices productServiceObj = session.getMapper(ProductServices.class);
            Product product = new Product();
            product.setId((long)(Math.random()*100));
            product.setBrand("LG");
            product.setModel("P500");
            product.setName("Optimus One");
            productServiceObj.save(product);
            session.commit();

        } finally {
        session.close();
        }
    }

}

session.getMapper() 方法将会以MyBatis 定义的默认方式创建一个 ProductServices 接口的实现。

运行程序后,查看数据库,如下图:


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值