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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 技术好文共享:第一讲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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
26天前
|
XML Java 数据库连接
MyBatis入门——MyBatis XML配置文件(3)
MyBatis入门——MyBatis XML配置文件(3)
25 5
|
6天前
|
Java 关系型数据库 MySQL
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
15 4
|
6天前
|
Java 数据库连接 API
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
13 3
|
6天前
|
Java 程序员
浅浅纪念花一个月完成Springboot+Mybatis+Springmvc+Vue2+elementUI的前后端交互入门项目
浅浅纪念花一个月完成Springboot+Mybatis+Springmvc+Vue2+elementUI的前后端交互入门项目
19 1
|
25天前
|
Java 数据库连接 数据库
Spring日志完结篇,MyBatis操作数据库(入门)
Spring日志完结篇,MyBatis操作数据库(入门)
|
6天前
|
XML Java 数据库连接
浅谈后端boot框架整合第三方技术JUnit MyBatis Druid整体思想
浅谈后端boot框架整合第三方技术JUnit MyBatis Druid整体思想
8 0
|
9天前
|
SQL Java 数据库连接
Mybatis Plus入门
Mybatis Plus入门
|
9天前
|
SQL Java 数据库连接
【MyBatis】深入解析MyBatis:高效操作数据库技术详解
【MyBatis】深入解析MyBatis:高效操作数据库技术详解
20 0
|
1月前
|
算法 Java 数据库连接
Spring+MySQL+数据结构+集合,Alibaba珍藏版mybatis手写文档
Spring+MySQL+数据结构+集合,Alibaba珍藏版mybatis手写文档
|
1月前
|
Java 数据库连接 Spring
Spring 整合mybatis
Spring 整合mybatis
29 2