Mybatis使用入门

mybatis概述

什么是mybatis?

它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性.

什么是ORM?

英文全称Object Relation Mapping,意思是:对象关系映射。对象指的是Java对象,关系指的是数据库中的关系模型,对象关系映射,指的就是在Java对象和数据库的关系模型之间建立一种对应关系,比如用一个Java的User类,去对应数据库中的一张User表,类中的属性和表中的列一一对应。User类就对应User表,一个User对象就对应User表中的一行数据。

举个例子:

User表有以下数据:

Mybatis使用入门

User类有以下数据:

Mybatis使用入门

它们两个的对应关系就是:id对应user_id,name对应user_name,pwd对应user_pwd.

---------------------------------------------------------------------------------------------------------------------------------

为什么mybatis是半自动的ORM框架?和hibernate的区别?

用mybatis进行开发,需要手动编写SQL语句。而全自动的ORM框架,如hibernate,则不需要编写SQL语句。用hibernate开发,只需要定义好ORM映射关系,就可以直接进行CRUD操作了。由于mybatis需要手写SQL语句,所以它有较高的灵活性,可以根据需要,*地对SQL进行定制,也因为要手写SQL,当要切换数据库时,SQL语句可能就要重写,因为不同的数据库有不同的方言(Dialect),所以mybatis的数据库无关性低。虽然mybatis需要手写SQL,但相比JDBC,它提供了输入映射和输出映射,可以很方便地进行SQL参数设置,以及结果集封装。并且还提供了关联查询和动态SQL等功能,极大地提升了开发的效率。并且它的学习成本也比hibernate低很多。

快速入门

只需要通过如下几个步骤,即可用mybatis快速进行持久层的开发

1.搭建数据库(这里使用mysql数据库)

2. 在pom文件添加所需依赖,并编写全局配置文件(mybatis根据这个配置文件的内容,创建相应的SqlSessionFactory)

3.编写mapper映射文件(SQL语句写在映射文件,可以根据需求,在这里对SQL语句进行自定义。)

4.加载全局配置文件,生成SqlSessionFactory

5.创建SqlSession,调用mapper映射文件中的SQL语句来执行CRUD操作

---------------------------------------------------------------------------------------------------------------------------------

下面通过详细的图文,让你从不了解的小白到学会Mybatis的基本操作(学会了Mybatis的基操只是个开始,路还很长。若想成为这方面的大神,理解底层源码是必不可少的)

---------------------------------------------------------------------------------------------------------------------------------

一、搭建数据库(用作测试)

在SQLyog执行以下sql语句

USE `cxk`; //数据库名为cxk

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `id` int(20) NOT NULL,
  `name` varchar(30) DEFAULT NULL,
  `pwd` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Data for the table `user` */

insert  into `user`(`id`,`name`,`pwd`) values (1,'蔡徐坤','123456'),(3,'坤坤','123456'),(4,'亚瑟','444444'),(5,'小马','444444'),(6,'王小二','111'),(7,'张三疯','222'),(8,'王大拿','333'),(9,'妲己','122'),(10,'赵云','6766'),(11,'安其拉','77777'),(12,'小鲁班','7777557');

---------------------------------------------------------------------------------------------------------------------------------

Mybatis使用入门

 

---------------------------------------------------------------------------------------------------------------------------------

二、打开idea创建一个名为Mybatis的maven项目

Mybatis使用入门

Mybatis使用入门

 

 

---------------------------------------------------------------------------------------------------------------------------------

三、pom文件添加依赖,在resource目录下编写全局配置文件

1.添加依赖

Mybatis使用入门

Mybatis使用入门

 

 2.编写配置文件

Mybatis使用入门

这是参数文件

<?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>
    <properties resource="db.properties"></properties>
    
    <environments default="mysql1">
        <environment id="mysql1">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
       <mapper resource="com/kun/dao/UserMapper.xml"/>
    </mappers>
</configuration>

mybatis全局配置文件

四、创建3个类、1个接口、1个映射文件。

1.User类(用作对象关系映射)

Mybatis使用入门

 

2.test类(执行CRUD的语句,并且检验运行结果)

import com.kun.dao.UserMapper;
import com.kun.pojo.User;
import com.kun.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class test {
    @Test
    public void test1(){
        SqlSession s= MybatisUtils.getSqlSession();
        UserMapper u= s.getMapper(UserMapper.class);
        List<User> list= u.getUserList();
        for (User list1:list){
            System.out.println(list1);
        }
    }
    @Test
    public  void  testInsert(){
        SqlSession s=MybatisUtils.getSqlSession();
        UserMapper u=s.getMapper(UserMapper.class);
        Map<String,Object> map=new HashMap<>();
        map.put("uid",12);
        map.put("uname","老三");
        map.put("upwd","7777557");

        int a=u.insertOne(map);
        s.commit();
        System.out.println("受影响行数"+a);
    }
    @Test
    public void deleteById(){
        SqlSession s=MybatisUtils.getSqlSession();
        UserMapper a=s.getMapper(UserMapper.class);
        int q= a.deleteId(2);
        s.commit();
        System.out.println("受影响行数"+q);
    }
    @Test
    public  void updateById(){
        SqlSession s=MybatisUtils.getSqlSession();
        UserMapper a=s.getMapper(UserMapper.class);
        Map<String,Object> map=new HashMap<>();
        map.put("id",4);
        map.put("name","小马");
        map.put("pwd","444444");
       int q= a.updateById(map);
        s.commit();
        System.out.println("受影响行数"+q);
    }
}

3.MybatisUtils类(运行开始就读取Mybatis全局配置文件)

Mybatis使用入门

4.UserMapper接口

Mybatis使用入门

5.创建UserMapper.xml映射文件

(映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心。)

 

 Mybatis使用入门

 

---------------------------------------------------------------------------------------------------------------------------------

以上准备好后,执行,查看结果。

---------------------------------------------------------------------------------------------------------------------------------

一、执行查询方法。

Mybatis使用入门

查询结果

Mybatis使用入门

数据库的数据

 Mybatis使用入门

 二、执行新增方法

Mybatis使用入门

结果

 Mybatis使用入门

 数据库的数据

Mybatis使用入门

 

三、执行删除方法

 Mybatis使用入门Mybatis使用入门

数据库的数据

Mybatis使用入门

 

 四、执行修改方法

Mybatis使用入门

Mybatis使用入门

数据库的数据

Mybatis使用入门

总结:

编写mapper.xml,书写SQL,并定义好SQL的输入参数,和输出参数
编写全局配置文件,配置数据源,以及要加载的mapper.xml文件
通过全局配置文件,创建SqlSessionFactory
每次进行CRUD时,通过SqlSessionFactory创建一个SqlSession
调用SqlSession上的selectOne,selectList,insert,delete,update等方法,传入mapper.xml中SQL标签的id,以及输入参数

补充:

程序运行的时候,报红色说Mapper.xml文件找不到。并且文件不放在resource文件夹。

把以下代码加到pom文件中。不然Mybatis只会默认从resource路径,寻找映射文件。

 <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

本章完。这虽然是Mybatis的基操,但也要一定学会和理解。

连基操都不会,还想学更深入的?做梦去吧
 

 

 

 

上一篇:Spring框架(六)—spring声明式事务


下一篇:创建Mybatis实例