Mybatis使用入门

mybatis概述

什么是mybatis?

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

什么是ORM?

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

举个例子:

User表有以下数据:

User类有以下数据:

它们两个的对应关系就是: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');

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

 

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

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

 

 

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

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

1.添加依赖

 

 2.编写配置文件

这是参数文件

<?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类(用作对象关系映射)

 

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全局配置文件)

4.UserMapper接口

5.创建UserMapper.xml映射文件

(映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是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的基操,但也要一定学会和理解。

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

 

 

 

原文地址:https://blog.csdn.net/caixukun1/article/details/122284304

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


1.pom.xml引入依赖 &lt;dependency&gt; &lt;groupId&gt;com.github.pagehelper&lt;/groupId&gt; &lt;artifactId&gt;pagehelper&lt;/artifactId&gt; &lt;version&gt;5
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt; &lt;!DOCTYPE configuration PUBLIC &quot;-//mybatis.org//DTD Config 3.0//EN&quot; &qu
准备工作 ① 创建数据库&amp;数据表 ## 创建数据库 CREATE DATABASE `dbtest1`; ## 创建数据表 CREATE TABLE `t_user` ( `id` INT NOT NULL AUTO_INCREMENT, `username` VARCHAR(20) DEF
MyBatis逆向工程是指根据数据库表结构自动生成对应的实体类、Mapper接口以及SQL映射文件的过程。这个过程可以通过MyBatis提供的逆向工程工具来完成,极大地方便了开发人员,避免了重复的代码编写,提高了开发效率。 创建逆向工程的步骤 1、添加依赖&amp;插件 &lt;!-- 控制Mave
MyBatis获取参数值的两种方式:${}和#{} ${}的本质就是字符串拼接,#{}的本质就是占位符赋值。 ${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自
resultMap作用是处理数据表中字段与java实体类中属性的映射关系。 准备工作 ① 创建数据库&amp;数据表 CREATE DATABASE `dbtest1`; CREATE TABLE `t_emp` ( `emp_id` int NOT NULL AUTO_INCREMENT, `em
EHCache缓存针对于MyBatis的二级缓存。 MyBatis默认二级缓存是SqlSessionFactory级别的。 添加依赖 &lt;!-- MyBatis-EHCache整合包 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.mybatis.cac
MyBatis 提供了一级缓存和二级缓存的支持,用于提高数据库查询的性能,减少不必要的数据库访问。 一级缓存(SqlSession 级别的缓存) 一级缓存是 MyBatis 中最细粒度的缓存,也称为本地缓存。它存在于每个 SqlSession 的生命周期中,当 SqlSession 被关闭或清空时,
动态SQL是 MyBatis 中非常强大且灵活的功能,允许你根据不同的条件构建SQL查询。 这主要通过 &lt;if&gt;、&lt;choose&gt;、&lt;when&gt;、&lt;otherwise&gt;、&lt;foreach&gt;等标签实现。 查询场景 /** * 根据条件查询员工
本教程操作系统:windows10系统、DELL G3电脑。 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。在 MyBatis 中,配置数据库连接是非常重要的第一步。下面将详细介绍如何配置 MyBatis 的
今天小编给大家分享的是MyBatis批量查询、插入、更新、删除如何实现,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。
今天小编给大家分享的是Mybatis操作多数据源实现的方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获...
本篇文章和大家了解一下mybatis集成到spring的方式有哪些。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。1 前言1.1 集成spring前使用mybat...
今天小编给大家分享的是mybatis-plus分页查询的3种方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获...
本篇内容主要讲解“mybatis之BaseTypeHandler怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mybatis...
这篇文章主要介绍了mybatisforeach怎么传两个参数的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mybatisforeach怎...
这篇“MyBatis映射文件中parameterType与resultType怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的...
这篇文章主要介绍“MyBatis怎么获取自动生成的键值”,在日常操作中,相信很多人在MyBatis怎么获取自动生成的键值问题上存在疑惑,小编查阅了各式资料,整理出
这篇文章主要讲解了“怎么去掉IntelliJIDEA中mybatis对应的xml文件警告”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入...
这篇文章主要介绍“MybatisPlus使用@TableId主键id自增长无效如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这...