mybatis

mybatis

一.Mybatis简介

Mybatis原名叫ibatis.Mybatis一开始属于Apache,2010年从Apache转移到了GoogleCode这个组织中。

Mybatis是一种基于ORM模式的,作用于Dao层的轻量级框架.和Hibernate类似,也支持各种SQL语句,也支持存储过程和高级映射等操作。

二.Mybatis特点

①Mybatis比Hibernate更为轻量级。

②Mybatis几乎消除了所有的JDBC代码和参数的手工设置。

③Mybatis具有比较强大的动态语句功能.而且Mybatis在JavaBean和表之间的映射关系建立方面,也更加的便捷灵活。

④Mybatis的核心API:

1.SqlSessionFactoryBuilder:

SqlSessionFactoryBuilder是整个Mybatis框架的入口,提供了一个build()方法,用来创建SqlSessionFactory对象. SqlSessionFactoryBuilder对象一般是在xml文件中通过configuration节点来进行配置。

2.SqlSessionFactory:

用来创建SqlSession.注意:该对象一般只用创建一个对象就可以,也就是不要重复创建该对象。

3.SqlSession:

SqlSession用来实现数据库的各种增删改查操作。

注意:因为SqlSession对象不是线程安全的,所以在使用该对象的时候,要确保该对象不能被多个方法所共享,当用完该对象之后,就要把该对象close()掉.

三.Mybatis的基本使用

①利用maven工厂导入所需要的jar包

mybatis_第1张图片

      <dependency>
          <groupId>mysqlgroupId>
          <artifactId>mysql-connector-javaartifactId>
          <version>5.0.7version>
      dependency>
      <dependency>
          <groupId>org.mybatisgroupId>
          <artifactId>mybatisartifactId>
          <version>3.2.7version>
      dependency>
View Code

②创建db.properties.xml文件

该文件用来简化数据库的连接配置,以后数据库有更改,直接在这个文件里面修改即可,可以添加多种不同的数据库。

mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/sql05
mysql.username=root
mysql.password=123

orcl.driver=oracle.jdbc.driver.OracleDriver
orcl.url=jdbc:oracle:thin:@localhost:1521:orcl
orcl.username=scott
orcl.password=123
View Code

③创建mybatis.xml配置文件

首先引用db.properties.xml文件,

mybatis_第2张图片

就可以引用db.properties的配置文件了。

如果是mysql的数据库的话,就加载mysql_conn

mybatis_第3张图片

管理数据源的时候:

                <property name="driver" value="${mysql.driver}" />
                <property name="url" value="${mysql.url}" />
                <property name="username" value="${mysql.username}" />
                <property name="password" value="${mysql.password}" />
View Code

mysql.driver一些分别对应着之前写db.properties配置文件。

接着加载映射文件,加载的映射文件用于配置数据库链接的一些操作

    
    
        
    

④创建PersonMapper.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.syc.dao.domain.Person">

    
    
    
    <resultMap type="person" id="personMap">
        
        <id column="pid" property="pid" />
        
        <result column="name" property="name" />
        <result column="nickname" property="nickname" />
    resultMap>

    
    <insert id="insertPerson">
        insert into person (name,nickname)
        values('王小二','店小二')
    insert>

    
    <insert id="insertPersonWithParams" parameterType="person">
        insert into
        person (name,nickname)
        values(#{name},#{nickname})
    insert>

    
    
    <select id="findAll" resultMap="personMap">
        select * from person
    select>

    <select id="findById" resultType="person" parameterType="int">
        select *
        from person
        where pid=#{pid}
    select>

    
    <update id="updateById" parameterType="person">
        update person set
        name=#{name},nickname=#{nickname}
        where pid=#{pid}
    update>
    
    
    <delete id="deleteById" parameterType="person">
        delete from person 
        where pid=#{pid}
    delete>
    
    
    <delete id="insertWithDeleteTag" parameterType="person">
        insert into
        person (name,nickname)
        values(#{name},#{nickname})
    delete>

mapper>
View Code

⑤创建MybatisUtil工具类,加载配置文件

package com.syc.dao.utils;

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;

public class MybatisUtil {

    private static SqlSessionFactory factory;
    // 解决资源争抢问题.
    private static ThreadLocal<SqlSession> localSessions = new ThreadLocal<SqlSession>();

    static {
        Reader reader = null;
        try {
            // 加载Mybatis的配置文件
            reader = Resources.getResourceAsReader("mybatis.xml");
            // 创建SqlSessionFactory对象.
            factory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    // 获取Session对象
    public static SqlSession getSession() {
        SqlSession session = localSessions.get();
        if (session == null) {
            session = factory.openSession();
            localSessions.set(session);
        }
        return session;
    }

    // 关闭session的方法
    public static void closeSession() {
        SqlSession session = localSessions.get();
        if (session != null) {
            session.close();
            localSessions.remove();
        }
    }
}
View Code

mybatis_第4张图片

创建session对象:

mybatis_第5张图片

⑥创建Person类

    private Integer pid; //id
    private String name;  //姓名
    private String nickname;  //称呼

⑦创建PersonDao类,执行具体的CRUD操作

mybatis_第6张图片

参考:https://www.cnblogs.com/jianshuai520/p/8669177.html

你可能感兴趣的:(mybatis)