快速搭建第一个Mybatis程序

网友投稿 1018 2022-05-30

一、简介

以Mybatis3.5.7为例

环境:

jdk8.0

Mysql8.0

maven3.8.4

IDEA

回顾:

JDBC

快速搭建第一个Mybatis程序

Mysql

Java基础

Maven

Junit

1.初识Mybatis

MyBatis 是一款优秀的

持久层框架

它支持自定义 SQL、存储过程以及高级映射。

MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作

MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。

2013年11月迁移到Github。所以要找Mybatis得去Github

怎么获得Mybatis?

maven仓库

org.mybatis mybatis 3.5.7

搜搜jar包的坐标网站https://mvnrepository.com/

Github: https://github.com/mybatis/mybatis-3/releases

Mybatis中文文档:https://mybatis.net.cn/index.html

2.持久化

数据持久化

持久化就是把程序的数据在持久状态和瞬时状态转化的过程

内存:断电后数据就消失了

数据库(jdbc),IO文件持久化

为什么需要持久化

内存断电后数据就丢失了,有一些对象我们不能让他丢掉

内存太贵了

3.持久层

Dao层,Service层,Controller层

完成持久化工作的代码块

层的界限十分明显

每个层的任务很明确,各司其职

关于三层架构,大家可以看这篇博客,讲解得很清楚SSM,三层结构,MVC三者的说明及关系(很全面)

4.为什么需要Mybatis

帮助程序员把数据存入到数据库中

方便

传统的JDBC代码太复杂了,框架可以简化操作,自动化。

不使用Mybatis也可以,更容易上手。

优点:

sql和代码分类,提高可维护性

提供映射标签,支持对象与数据库的orm字段关系映射

ORM是对象关系映射的意思

O ------ object就是 java对象

R -------relational 关系型数据

M -------mappering 映射

提供哦那个对象关系映射标签,支持对象关系组建维护

提供xml标签,支持编写动态sql

二、第一个Mybatis程序

思路:搭建环境–>导入Mybatis–>编写代码–>测试

1.搭建环境

先提供一个数据库和用来操作的表

新建项目

1.File->new Project 新建maven项目

下面这一堆代码是构建maven项目以后,自带的

4.0.0 com.kuang Mybatis-study 1.0-SNAPSHOT 8 8

2.删除src,这样就可以当成父工程了

3.导入maven依赖

第一次加入依赖的时候,项目会爆红,记得重新加载项目,这样就不会爆红了

mysql mysql-connector-java 8.0.16 org.mybatis mybatis 3.5.7 org.junit.jupiter junit-jupiter-api 5.8.2 test

2.创建一个新模块

父项目的pox.xml就会多出来这样的代码

mybatis-01 mybatis-01 mybatis-01

编写mybatis核心配置文件

把下面的代码拷贝到刚刚新建的xml文件

上面那一个从官网复制过来的,相当于是一个模板,但是里面具体的信息需要我们自己去设置,比如说我们要连接的数据库的用户名,密码等信息需要手动配置

3.编写代码

编写mybatis工具类

//工厂模式 //sqlSessionFactory---->sqlSession public class MybatisUtils { public static SqlSessionFactory sqlSessionFactory; static { try { //读取配置文件 //下面三句话是固定的 //使用Mybatis第一步:获取sqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } /** * 既然有了SqlSessionFactory,顾名思义,我们就可以从中获取SqlSession的实例了 * SqlSession完全包含了面向数据库执行sql命令所需要的所有方法 */ public static SqlSession getSqlSession() { SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; } }

实体类(domain,pojo,domain)每一个类都和数据库中的一张表相关联

package com.kuang.pojo; /**实体类 * @author zengyihong * @create 2022--03--28 17:14 */ public class User { private int id; private String username; private String password; public User() { } public User(int id, String username, String password) { this.id = id; this.username = username; this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }

DAO接口(对数据库表的CRUD操作,对user表的操作就对应一个userDao)

package com.kuang.dao; import com.kuang.pojo.User; import java.util.List; /**这个类用来操作数据库中对象的实体 * @author zengyihong * @create 2022--03--28 17:16 */ //dao等价于mapper public interface UserDao { List getUserList(); }

接口实现类由原来的UserDaoImpl转换成为一个Mapper配置文件

可能大家看到上面那些有点懵,那我们就来复习一下 ,具体的大家可以看我博客中JDBC的内容,里面有关于分层的讲解。

4.Junit测试

package com.kuang.dao; import com.kuang.pojo.User; import com.kuang.utils.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.jupiter.api.Test; import java.util.List; /** * @author zengyihong * @create 2022--03--29 9:55 */ public class UserDaoTest { @Test public void test(){ // SqlSession // 第一步:获得SqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //方式一:执行SQL getMapper UserDao mapper = sqlSession.getMapper(UserDao.class); List userList = mapper.getUserList(); for (User user:userList){ System.out.println(user); } //关闭SqlSession sqlSession.close(); } }

三、可能遇到的问题

1.配置文件没有注册

2.绑定接口错误

3.方法名错误

4.返回类型错误

5.maven导出资源错误

在pox.xml中,加入下面代码即可

src/main/resources **/*.properties **/*.xml true src/main/java **/*.properties **/*.xml true

MyBatis 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:google支付回调验证(备用)
下一篇:【分布式框架】深入理解分布式之缓存击穿
相关文章