技术好文共享:第一讲mybatis入门知识

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 技术好文共享:第一讲mybatis入门知识

第一讲: mybaits基础


一、环境搭建


1. Java 1.8


2. Mysql8.023


3. Meanv3.6.2


4. Idea


学习的知识点: jdbc,Java基础,数据库原理,mysql,junit


学生mybaits的官网: 中文帮助:


二、什么是mybaits


1. 简介


1.1 什么是myBatis


MyBatis框架也被称之为ORM(Object/Relation Mapping,即对象关系映射)框架。所谓的ORM就是一种为了解决面向对象与关系型数据库中数据类型不匹配的技术,它通过描述Java对象与数据库表之间的映射关系,自动将Java应用程序中的对象持久化到关系型数据库的表中。


框架结构图:


l MyBatis 是一款优秀的持久层框架


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


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


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


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


l 2013年11月迁移到Github。-----说明包可以到Github上找


1.2 如何获取MyBatis


方式一:maven仓库


第一步:搜索maven仓库


第二步:在maven仓库中搜索MyBatis


第三步:点击下载MyBatis


第四步:下载MyBatis的版本


maven仓库中MyBatis版本


org.mybatis


mybatis


3.5.6


MySQL ---8.023


mysql


mysql-connector-java


8.0.23


Mysql-jdbc


mysql


mysql-connector-java


8.0.23


junit


junit


junit


4.13.2


test


[strong>dependencies

[strong>dependency

[strong>groupId

[strong>artifactId

[strong>version


[strong>dependency

[strong>groupId

[strong>artifactId

[strong>version


[strong>dependency

[strong>groupId

[strong>artifactId

[strong>version

[strong>scope



[strong>build

[strong>resources

[strong>resource

[strong>directory

[strong>includes

[strong>include

[strong>include


[strong>filtering


[strong>resource

[strong>directory

[strong>includes

[strong>include

[strong>include


[strong>filtering




[strong>properties

[strong>project.build.sourceEncoding


1.3 持久化与数据持久层


持久化:就是把数据保存到可掉电式存储设备中供之后使用。


三层结构


三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。


一个最常用的扩展就是将三层体系扩展为五层体系,即表示层(Presentation)、控制/中介层(Controller/Mediator)、领域层(Domain)、数据持久层(Data Persistence)和数据源层(Data Source)。


Mybatis的层结构


1.4 MyBatis的特点


l 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。


l 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。


l 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。


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


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


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


1.5 补充建议


1.创建数据的方式


最简单的//代码效果参考:http://www.lyjsj.net.cn/wz/art_23997.html

方式,只创建数据库:

create database dbname;


创建数据库并设定编码格式:


create database dbname


default character set utf8;


判断原来不存在,则创建数据库,并指定编码格式:


create database if not


exists dbname default character set utf8;


判断原来不存在,则创建数据库,并指定编码格式和校验集:


create database


if not exists dbname default character set utf8 collate utf8_general_ci;


(2) 建表语据


CREATE TABLE user(


id int not null


PRIMARY key ,


name varchar(50)


default null,


pwd varchar(50)


default null,


age int


default null


)ENGINE=InnoDB DEFAULT CHARSET=utf8


#对表创建进行编码


2 第一个mybatis程序


第一步: 建立数据库与表,输入数据


(1)创建数据库jxgl命令:


create database if not exists jxgl default


character set utf8 collate utf8_general_ci


(2)创建用户表


CREATE TABLE user(


id int not null


PRIMARY key ,


name varchar(50)


default null,


pwd varchar(50)


default null,


age //代码效果参考:http://www.lyjsj.net.cn/wx/art_23993.html

int

default null


)ENGINE=InnoDB DEFAULT CHARSET=utf8


#对表创建进行编码


(3) 插入数据


insert


into user(id,name,pwd,age) values


(1,'李明','123456',34),


(2,'王三','123456',44),


(3,'何物','123456',18)


第二步: 创建普通maven项目


1。 创建maven项目mybatis01


2. 删除src 目录 将这个项目作为父工程


3. 导入manve依赖


要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。


如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:


mysql


mysql-connector-java


8.0.23


org.mybatis


mybatis


3.5.6


junit


junit


4.13.2


第三步: 创建普通module 模块---子工程


1. 创建mybatis-01 模块


2. 设置资源类型


点击file-----project Structur...


弹出对话框----设置资源


第四步: 编写mybatis的配置文件


<!DOCTYPE configuration


PUBLIC "-//mybatis.org//DTD Config 3.0//EN"


"http://mybatis.org/dtd/mybatis-3-config.dtd">


写好版


<!DOCTYPE //代码效果参考:http://www.lyjsj.net.cn/wz/art_23991.html

configuration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"


"http://mybatis.org/dtd/mybatis-3-config.dtd">



value="jdbc:mysql://localhost:3306/jxgl?serverTimezone=UTC&useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>


第五步: 封装mybatis工具类


创建// sqlsessionfactory工厂


// 创建SqlSession 对象,用于数据库的各种操作


package ljg.com.util;


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;


public class MybatisUtils {


private static SqlSessionFactory sqlSessionFactory;


// 创建sqlsessionfactory工厂


static {


try {


String resource = "mybatis-config.xml";


InputStream inputStream = Resources.getResourceAsStream(resource);


sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);


} catch (IOException e) {


e.printStackTrace();


}


}


// 创建SqlSession 对象,用于数据库的各种操作


public static SqlSession getSqlSession(){


return sqlSessionFactory.openSession();


}


}


第六步: 创建pojo 类


public class User {


private int id;


private String name;


private String pwd;


private int age;


public User() {


}


第七步: 创建dao层接口


package ljg.com.dao;


import ljg.com.pojo.User;


import java.util.List;


public interface UserDao {


List getUserList();


}


第八步: 创建接口的实现类配置文件UserMapper.xml,重写接口中的方法;


说明: 1. 在dao层写 在mybatis中对应mapper层


2 文件名最好好接口名字一致,相当于写dao的实现类 userDaoImpl


3 在配置文件中重写UserDao的方法 ,改用sql语句写


如下:


<!DOCTYPE mapper


PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"


"http://mybatis.org/dtd/mybatis-3-mapper.dtd">



select from jxgl.user;


<?xml version="1.0" encoding="UTF-8" ?>


<!DOCTYPEmapper


PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"


""

[strong>mapper namespace="ljg.com.dao.UserMapper"


<?xml version="1.0" encoding="UTF-8" ?>


<!DOCTYPEmapper


PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"


""

[strong>mapper namespace="ljg.com.mapper.UserMapper"


[strong>insert


id="addUser" parameterType="ljg.com.pojo.User"

insert into xygl.user(id,name,pwd,age) values


(#{id},#{name},#{pwd},#{age})



[strong>select


id="findbyid" resultType="ljg.com.pojo.User"



第九步: 测试操作


注意点: 经常出现的问题:


1. Type interface ljg.com.dao.UserDao


is not known to the MapperRegistry.


类型 接口 userdao 没有在 注册中心注册


解决方法


2.


解决方法 在poml.xml 添加这个文件


src/main/resources


**/.properties


/*.xml


true


src/main/java


/.properties


**/.xml


true


3. .io.MalformedByteSequenceException:


1 字节的 UTF-8 序列的字节 错误


Cause:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceExcep


解决方法


解决方案:


在pom.xml文件中配置


properties


project


build


sourceEncoding


project


build


sourceEncoding



4. 测试代码


package ljg.com.Userdao;


import ljg.com.dao.UserDao;


import ljg.com.pojo.User;


import ljg.com.util.MybatisUtils;


import org.apache.ibatis.session.SqlSession;


import org.junit.Test;


import java.util.List;


public class UserTest {


@Test


public void userTest(){


SqlSession sqlSession=null;


try {


sqlSession = MybatisUtils.getSqlSession();


UserDao mapper = sqlSession.getMapper(UserDao.class);


List userList = mapper.getUserList();


for (User user : userList) {


System.out.println(user);


}


}catch (Exception e){


System.out.println(e.fillInStackTrace());


&n

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
536 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
2月前
|
SQL Java 数据库连接
Mybatis入门(select标签)
这篇文章介绍了Mybatis中`select`标签的基本用法及其相关属性,并通过示例展示了如何配置和执行SQL查询语句。
52 0
Mybatis入门(select标签)
|
4月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
4月前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
291 0
|
4月前
|
SQL Java 关系型数据库
MyBatis-Plus 分页魅力绽放!紧跟技术热点,带你领略数据分页的高效与便捷
【8月更文挑战第29天】在 Java 开发中,数据处理至关重要,尤其在大量数据查询与展示时,分页功能尤为重要。MyBatis-Plus 作为一款强大的持久层框架,提供了便捷高效的分页解决方案。通过封装数据库分页查询语句,开发者能轻松实现分页功能。在实际应用中,只需创建 `Page` 对象并设置页码和每页条数,再通过 `QueryWrapper` 构建查询条件,调用 `selectPage` 方法即可完成分页查询。MyBatis-Plus 不仅生成分页 SQL 语句,还自动处理参数合法性检查,并支持条件查询和排序等功能,极大地提升了系统性能和稳定性。
70 0
|
6月前
|
Java 数据库连接 API
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
69 3
|
6月前
|
Java 程序员
浅浅纪念花一个月完成Springboot+Mybatis+Springmvc+Vue2+elementUI的前后端交互入门项目
浅浅纪念花一个月完成Springboot+Mybatis+Springmvc+Vue2+elementUI的前后端交互入门项目
55 1
|
6月前
|
XML Java 数据库连接
浅谈后端boot框架整合第三方技术JUnit MyBatis Druid整体思想
浅谈后端boot框架整合第三方技术JUnit MyBatis Druid整体思想
37 0
|
2月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
147 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
2月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
78 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块