MyBatis简介

一、ORM

1.简介:ORM全称为Object Relation Mapping,即对象/关系数据库映射,是面向对象的对象模型和关系型数据之间的相互转换。可以把ORM框架理解为面向对象编程语言和数据库之间的桥梁,它把关系型数据库包装成面向对象的模型(即数据库中的表和项目中的实体对应),以面向对象的思想来操作数据库。

2.基本映射方式:orm提供了持久化类和数据库表之间的关系,通过这种映射关系,可以很方便的通过对持久化类的操作实现对数据表的操作。可分为三种映射方式:

~数据表——映射类。持久化类被映射到一个数据表。程序对这个类进行创建,修改属性,删除实例,系统就会将这些操作转化对这个映射表进行CRUD操作。

~数据表的行——映射对象( 即new Object() )。可由类创建很多对象,每个对象就对应数据表中的一行数据。当程序就该这个对象时,ORM框架就会将其转成对应的数据表中对应行的操作。

~数据表的列(字段)——映射对象的属性。当修改某个创建的对象的属性时,ORM框架将会转换成对应数据表中指定数据行的执行列进行操作。

3.流行的ORM框架简介

~JPA。JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA本身只是一种ORM规范,并不是ORM产品。相对于其他开源ORM框架,JPA最大优势在于它是官方标准,具有通用性。

~Hibernate。Hibernate 是一种ORM框架,全称为 Object-Relative Database-Mapping,在Java对象与关系型数据库之间建立某种映射,以实现直接存取Java对象(POJO)。Hibernate灵巧的设计、优秀的性能,以及丰富的文档,都是其风靡全球的重要因素。

~MyBatis。MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。它是一种“半自动化”的ORM的实现,并不支持存粹的面向对象操作,它允许开发人员直接编写SQL语句。

二、MyBatis概述

1.简介:MyBatis是一个支持普通SQL查询、存储过程和高级映射的优秀持久层框架。可以使用见的XML或注解进行配置和原始映射,以将接口和Java的对象映射到数据库中的记录。其只要思想就是将程序中的大量SQL语句剥离出来,配置在配置文件中,以实现SQL的灵活配置。

2.好处:将SQL语句与程序代码进行分离,做到可以在不修改程序代码的情况下,直接在配置文件中修改SQL。

3.为什么说MyBatis是半自动化的ORM框架:“半自动化”是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言的,“全自动化”ORM实现了程序类和数据库表之间的映射,以及SQL的自动生成和执行。而MyBatis也实现了程序类和数据表之间的映射,但其SQL语句是需要程序员手动进行配置的,所以称之为“半自动化的”ORM框架。

4.在Spring中简单的使用Mybaits:

首先在项目中导入需要的jar包:

    <!--mysql的jar包-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.12</version>
    </dependency>

    <!--mybatis的jar包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.2.1</version>
    </dependency>

数据库的操作:

#创建一个user表,有id、name、sex、age列
CREATE TABLE user(
    id int(11) PRIMARY KEY AUTO_INCREMENT,
    name archer(18) DEFAULT NULL,
    sex bit(2) DEFAULT 0,
    age int(11) DEFAULT NULL
);

对应的java实体类:

package com.hu.model;

public class User {

    /** 标识 */
    private Integer id;

    /** 姓名 */
    private String name;

    /** 性别 */
    private Integer sex;

    /** 年龄 */
    private Integer age;


    //省略get/set方法。。。
}

UserMapper.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.hu.mapper.UserMapper">
        <insert id="save" parameterType="com.hu.model.User" useGeneratedKeys="true">
            insert into user(name,sex,age) values (#{name},#{sex},#{age})
        </insert>
    </mapper>

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>
    <!--指定MyBatis 所用日志的-->
    <settings>
        <setting name="log4j" value="LOG4J"/>
    </settings>
    <!--环境配置,即连接的数据库-->
    <environments default="mysql">
        <environment id="mysql">
            <!--指定事务管理类型,type="JDBC"指直接使用JDBC的提交和回滚设置-->
            <transactionManager type="JDBC" />
            <!-- dataSource数据源配置,POOLED是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="123456" />
            </dataSource>
        </environment>
    </environments>
    <!-- mappers告诉了MyBatis去哪里找持久化类的映射文件-->
    <mappers>
        <mapper resource="com/hu/mapper/UserMapper.xml"/>
    </mappers>

</configuration>

测试文件:

package com.hu.controller;

import com.hu.model.User;
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.InputStream;

public class MyBatisTest {

    public static void main(String[] args) throws Exception {
        //读取mybatis-config.xml文件
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        //初始化mybatis,创建SqlSessionFactory类的实例
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //创建Session实例
        SqlSession session = sqlSessionFactory.openSession();
        //创建User对象
        User user = new User("admin",1,26);
        //插入数据
        session.insert("com.hu.mapper.Usermapper.save",user);
        //提交事务
        session.commit();
        //关闭
        session.close();

    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值