mybatis 入门

1、Mybatis简介

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

2、环境配置

本文采用IDEA2016.3、Maven3.3.9建立Mybatis demo。工程建立过程可自行百度IDEA Maven。在工程建立后的pox.xml文件中,在dependencies标签块中加入如下代码可以将Mybatis环境导入,同时也导入mysql driver

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.1</version>
 </dependency>
 <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.0.8</version>
 </dependency>

添加resources文件夹,整个工程目录如下图所示:
这里写图片描述

3、MyBatis配置文件

MyBatis的配置文件主要配置了整个框架的核心设置,包括获取数据库连接实例的数据源以及控制方式相关的事务管理器。在resources目录中新建mybatis-config.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>
        <!-- Globally enables or disables any caches configured in any mapper under this configuration -->
        <setting name="cacheEnabled" value="true"/>
        <!-- Sets the number of seconds the driver will wait for a response from the database -->
        <setting name="defaultStatementTimeout" value="3000"/>
        <!-- Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!-- Allows JDBC support for generated keys. A compatible driver is required.
        This setting forces generated keys to be used if set to true,
         as some drivers deny compatibility but still work -->
        <setting name="useGeneratedKeys" value="true"/>
    </settings>

    <!-- Continue going here -->
    <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/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="blogmapper.xml"/>
    </mappers>

</configuration>

其中mapper对应的resource则是一个有关POJO与数据库数据对应相关的配置文件,下文会提到

4.建立数据库与Bean

建立一个名为Blog的JavaBean,如下:

package com.wzy;

/**
 * Created by wzyfi on 2016/11/29.
 */
public class Blog {
    private int id;

    private String title;

    private String content;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    @Override
    public String toString() {
        return title + ":" + content;
    }
}

同时在mysql中建立数据库(mybatis)和数据表(Blog)。

5、用xml配置文件编写POJO与数据库映射关系

在resources目录下建立blogmapper.xml,代码如下:

<?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.wzy.blogmapper">

    <select id="selectBlog" resultType="com.wzy.Blog">
      select * from Blog where id = #{id}
    </select>
</mapper>

在该配置文件中,定义了命名空间com.wzy.blogmapper,同时在该命名空间中设定了一个id为selectBlog的查询语句,并且通过resultType确定了所返回的类型,下面在测试中就可以使用com.wzy.blogmapper.selectBlog来调用映射语句。

6、映射语句调用

MyBatis中可以使用流读入配置文件,并通过流建立SqlSessionFactory来获取SqlSession,在通过SqlSession进行映射语句的调用和数据获取。代码如下:

package com.wzy;

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 java.io.IOException;
import java.io.InputStream;


/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {

        String resource = "mybatis-config.xml";
        try {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession session = sqlSessionFactory.openSession();
            Blog blog = session.selectOne("com.wzy.blogmapper.selectBlog", 1);
            session.close();
            System.out.println(blog.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

7.结果

在数据库中插入一条数据
这里写图片描述

运行结果,如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值