1、简介

什么是MyBatis?

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

特点

  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
  • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  • 提供映射标签,支持对象与数据库的orm字段关系映射
  • 提供对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql

学习视频:【狂神JAVA】MyBatis

2、创建一个简单的MyBatis小程序

本人配置

  • jdk1.8.0_191 (jdk1.7以上均可)
  • Maven 3.8.2
  • MySQL 8.0.17 (mysql5.6以上均可)

软件:IDEA(2021.2.1)

1.首先新建一个Maven项目

这里先给大家看一下我的文件夹配置(没有的需要自己新建喔),后面可以根据这个文件夹配置来放置自己的文件。当然,在实际项目开发中,问我的这种放置方式不是正确的,我这样放置,是便于自己理解O(∩_∩)O哈哈

2.配置pom.xml

对应文件名称 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId>
<artifactId>Mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<!-- 导入依赖-->
<dependencies>
<!-- 数据库依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<!-- Mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!-- 测试包依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies> <!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>

3.配置数据库连接

对应文件名称 mybatis-config.xml

这里的属性driver、url、username、password可以在idea里,连接数据库时需要填的一些配置信息,复制过来即可

<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT"/>
<property name="username" value="root"/>
<property name="password" value="zhy123"/>
</dataSource>
</environment>
</environments> <!--每一个mapper.xml都需要注册-->
<!--这里特别重要噢,如果你以后的项目有多个类似UserMapper.xml这样的文件(主要是写SQL语句的),都需要在这里注册喔~-->
<mappers>
<mapper resource="mybatis/Interface/UserMapper.xml"></mapper>
</mappers> </configuration>

4.配置Mybatis

对应文件名称 MybatisUtils.java

package mybatis.utils;

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; //sqlSessionFactory --> sqlSession
public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static {
try {
//使用mybatis第一步:获取sqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
// 你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句 public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
} }

5.新建实体类User

对应文件名称 User.java

在此之前,可以在mysql新建一个数据库和一张表(我这里的数据库名是mybatis,表名是user)

以下代码可以通过jar包lombok的注解来简化代码,感兴趣的小伙伴可以去了解lombok的使用。

package mybatis.dataType;

public class User {
int id;
String name;
String pwd; public User() {
} public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + pwd + '\'' +
'}';
}
}

6.接口代码

对应文件名称 Inter.java

package mybatis.Interface;

import mybatis.dataType.User;

import java.util.List;

public interface Inter {
//查询数据库全部内容
List<User> getUserList(); //通过id查找指定用户
User getUserById(Integer id); //插入一个用户
void addUser(User user); //更新一个用户信息
void updateUser(User user); //删除一个用户
void deleteUser(Integer id);
}

7.接口实现类

对应文件名称 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">
<!--namespace绑定一个对应的mapper接口-->
<mapper namespace="mybatis.Interface.Inter">
<!--查询全部用户信息-->
<select id="getUserList" resultType="mybatis.dataType.User">
select * from mybatis.user
</select>
<!--通过一个id查询用户信息-->
<select id="getUserById" resultType="mybatis.dataType.User">
select * from mybatis.user where id=#{id}
</select>
<!--插入一个用户信息-->
<insert id="addUser" parameterType="mybatis.dataType.User">
insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
<!--更新一个用户信息-->
<update id="updateUser" parameterType="mybatis.dataType.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
<!--删除一个查用户信息-->
<delete id="deleteUser" parameterType="java.lang.Integer">
delete from mybatis.user where id=#{id}
</delete>
</mapper>

8.Test测试类验证

对应文件名称 test.java

测试的时候,是点侧边栏的这个按键运行:

注:测试只是用来验证代码是否正确,数据库交互能否成功,正式项目开发中,按需所取即可

package mybatis;

import mybatis.Interface.Inter;
import mybatis.dataType.User;
import mybatis.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import java.util.List; public class test { //查询全部用户信息,这种写法有处理异常,比较建议
@Test
public void test(){
// 获得sqlsession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
try{
// 1.执行 getmapper
Inter userDao = sqlSession.getMapper(Inter.class);
List<User> userList = userDao.getUserList();
// method 2
// List<User> userList = sqlSession.selectList("com.hou.dao.UserDao.getUserList");
for(User user: userList){
System.out.println(user);
}
}catch(Exception e){
e.printStackTrace();
}finally{
//关闭
sqlSession.close();
} } //查询全部用户信息
@Test
public void getUserList(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
Inter mapper = sqlSession.getMapper(Inter.class);
List<User> user = mapper.getUserList();
System.out.println(user);
sqlSession.close();
} //通过一个id查询用户信息
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession(); Inter mapper = sqlSession.getMapper(Inter.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
} //增删改需要提交事务 //插入一个用户信息
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession(); Inter mapper = sqlSession.getMapper(Inter.class);
mapper.addUser(new User(8,"周八","888")); //提交事务
sqlSession.commit();
sqlSession.close();
} //更新一个用户信息
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession(); Inter mapper = sqlSession.getMapper(Inter.class);
mapper.updateUser(new User(8,"hello","123")); //提交事务
sqlSession.commit();
sqlSession.close();
} //删除一个查用户信息
@Test
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession(); Inter mapper = sqlSession.getMapper(Inter.class);
mapper.deleteUser(8); //提交事务
sqlSession.commit();
sqlSession.close();
}
}

这里的代码,我是已经全部验证成功了的,如果报错的话,请查看下面几条提示:

▸是否将文件mybatis-config.xml里的属性配置成自己的,如driver、url、username、password;

▸是否将文件UserMapper.xml里的中文注释删除;

▸检查一下SQL语句是否可以在数据库中运行;

▸依赖包是否成功导入;

▸数据库的数据是否提前已经写好;

▸检查文件pom.xml里的导入依赖包配置,mysql的版本号是否与自己的一致,我的是mysql版本8的;

...

暂时想到的是这些,如果是刚入门的新手,建议是先看懂我的代码,然后复制看能不能运行,再去新建一个项目,模仿着来操作代码,个人觉得这样入门的比较快;

噢,对了,还可以先去看看前面设有链接的学习视频,B站里的up主狂神的Mybatis讲解,个人觉得讲得真挺好的!

使用Mybatis的一些基本配置及Mybatis与数据库交互测试验证的更多相关文章

  1. mybatis generator配置,Mybatis自动生成文件配置,Mybatis自动生成实体Bean配置

    mybatis generator配置,Mybatis自动生成文件配置,Mybatis自动生成实体Bean配置 ============================== 蕃薯耀 2018年3月14 ...

  2. 带你搭建一个简单的mybatis项目:IDEA+spring+springMVC+mybatis+Mysql

    最近小编有点闲,突发奇想想重温一下mybatis,然后在脑海中搜索了一下,纳尼,居然不太会用了,想到这里都是泪啊!!现在我所呆的的公司使用的是springboot+hebinate,编程都是使用的JP ...

  3. MyBatis学习(一)、MyBatis简介与配置MyBatis+Spring+MySql

    一.MyBatis简介与配置MyBatis+Spring+MySql 1.1MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的J ...

  4. MyBatis复习【简单配置CRUD】

    这里的案例集成了log4j的日志框架,项目架构: 用到的jar文件 添加配置文件:mybatis-config.xml  和dao层配置文件StudentDao.xml 这里书写了个简单的案例仅为了说 ...

  5. MyBatis详解 与配置MyBatis+Spring+MySql

    MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML 和注解来配置和映射基本 ...

  6. Mybatis的二级缓存配置

    一个项目中肯定会存在很多共用的查询数据,对于这一部分的数据,没必要每一个用户访问时都去查询数据库,因此配置二级缓存将是非常必要的.  Mybatis的二级缓存配置相当容易,要开启二级缓存,只需要在你的 ...

  7. 【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

    [转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的con ...

  8. Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作

    详细的Spring MVC框架搭配在这个连接中: Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 这篇主 ...

  9. 笔记:MyBatis 使用 Java API配置

    我们已经讨论了各种MyBatis配置元素,如envronments.typeAlias和typeHandlers,以及如何使用XML配置它们.即使你想使用基于JavaAPI的MyBatis配置,MyB ...

随机推荐

  1. 刷题-力扣-1011. 在 D 天内送达包裹的能力

    1011. 在 D 天内送达包裹的能力 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/capacity-to-ship-packag ...

  2. (原创)[C#] DataTable排序扩展方法

    一,前言 DataTable的应用极其广泛,对DataTable进行排序也有很多方式,每种的实现方式都不难,但是使用起来却比较繁琐,所以本人便写了一个扩展方法,专门对DataTable进行操作. 本篇 ...

  3. linux centos7 “git clone https://github.com/XXXXX” 报错解决方法

    2021-08-04 1. 问题描述 在执行以下命令时出现错误"正克隆到 'XXXXX'... fatal: unable to access 'https://github.com/lag ...

  4. Linux centos7 mysql 的安装配置

    2021-07-21 1. 创建用户 # 创建用户useradd mysql# 修改密码 passwd mysql 2. 下载 wget 网址 3. 解压 # 创建安装文件夹mkdir app# 解压 ...

  5. JVM加载class文件的一些理解

    Java是一种动态解释型语言,类(class)只有被加载到JVM中后才能运行.每当一个Java程序运行时,都会有一个对应的JVM实例,只有当程序运行结束后,这个JVM才会退出.JVM实例通过调用类的m ...

  6. NumPy的基本操作

    1 简介 NumPy 是用于处理数组的 python 库,部分用 Python 编写,但是大多数需要快速计算的部分都是用 C 或 C ++ 编写的.它还拥有在线性代数.傅立叶变换和矩阵领域中工作的函数 ...

  7. pycharm 汉化

    1.首先进入pycharm,点击file,找到setting. 2.点击 plugins 搜索Chinese,找到Chinese(simplified)Language Pack EAP,点击inst ...

  8. 20210826 Lighthouse,Miner,Lyk Love painting,Revive

    考场 T1 这不裸的容斥 T2 这不裸的欧拉路,先从奇数度点开始走,走不了就传送 T3 什么玩意,暴力都不会 T4 点分树??? 仔细想了一波,发现 T1 T2 都好做,T3 二分答案后可以暴力贪心, ...

  9. IIS托管Asp.net Core及Abp VNext

    默认方式安装IIS后,从官方网站下载IIS模块 https://dotnet.microsoft.com/download/dotnet-core/3.1 2个都需要安装 安装后,新建网站指向发布的磁 ...

  10. Java实现发送邮件,图片,附件

    参照地址 1.JavaMail 介绍 JavaMail 是sun公司(现以被甲骨文收购)为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如前面 ...