配置MyBatis 3

MyBatis是一个非常流行且也是最有效的SQL映射框架。 MyBatis可用于Java和.net语言。 MyBatis并不是Hibernate的真正替代品,但是我们可以使用该框架来减少MyBatis提供的高效和高性能的数据库相关代码。

本教程将向您展示使用数据库配置MyBatis 3的步骤。 MyBatis 3支持基于xml和基于注释的配置,但是在使用xml配置时可以看到MyBatis的真正功能。 本教程仅向您显示使用xml的配置。


使用的工具:

  1. MyBatis 3.0.4
  2. MySql Java连接器5.1

使用MyBatis不需要很多jar,只需带驱动程序的MyBatis 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类:

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中,我们有两种类型的配置文件:

环境规范配置文件:将只有一个文件定义MyBatis映射框架要使用的环境设置。 该文件定义了与数据库连接,驱动程序,事务管理,连接池,其他映射文件相关的设置,以及许多我们将在后续教程中看到的设置。

映射文件: MyBatis框架的一个应用程序中可以有多个映射文件。 映射文件包含有关在Java接口中定义的相关服务集的信息。 它定义了用于特定服务的参数化SQL语句,输入了SQL参数,并且还定义了由SQL语句返回的结果数据的返回映射。
这就是说,我们的示例中将有两个xml文件:一个用于环境设置,另一个将是与Product类相关的服务的映射文件。
以下是环境规范配置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>
    <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>

如您所见,<configuration />保留了配置,并且有许多标签定义了MyBatis映射框架的设置。 我们将一一看到以上所有设置:

<settings /> :此标签用于指定一些用于整个MyBatis应用程序的通用设置。 上面的文件文件包含将属性“ lazyLoadingEnabled”设置为禁用的示例。 在接下来的教程中,我们将看到更多设置选项。

<typeAliases>:标记将允许为我们的域类使用定义别名,以便以后在任何MyBatis配置文件中使用。

<environments />:标签用于定义与数据库相关的设置。 我们可以有多个环境设置,但是MyBatis将一次使用默认属性指定的一个环境。

<mappers>:此标记用于定义映射文件xml文件的位置。 我们可以定义多个映射文件。

在界面中定义服务:

之后,您必须创建一个接口,该接口将定义我们要提供的服务。 在is接口之后,该接口仅为域类Product定义了一种“保存”方法:

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语句。 在这里,属性“ 名称空间 ”定义了已为其定义此映射文件的接口。

<insert />标记定义该操作为插入类型。 “ id ”属性的值指定为其定义操作的函数名称。 这是保存。 属性“ parameterType ”定义方法的参数是哪种类型。 我们在这里为产品类使用了别名。 然后,我们必须定义SQL语句。 #{id}定义将Product类的属性“ id ”作为参数传递给SQL查询。

创建MyBatis会话并使用产品服务:

以下是我们的测试类,该类创建MyBasit的Session,然后使用ProductService接口的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()方法提供由MaBatis框架在运行时定义的接口的默认实现。

运行此示例时,记录将保存到数据库表中。

MyBatis配置插入语句结果

您也可以通过从以下链接下载示例代码来尝试该示例:
来源+库: 下载

参考:来自Rai Studies博客的JCG合作伙伴 Rahul Mondal 配置MyBatis 3


翻译自: https://www.javacodegeeks.com/2012/01/configuring-mybatis-3.html

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值