MyBatis简介及配置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MyBatis简介及配置

简介

什么是MyBatis

  • MyBatis 是一款优秀的持久层框架
  • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程
  • MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
  • MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并 且改名为MyBatis 。 2013年11月迁移到Github .
  • Mybatis官方文档 : http://www.mybatis.org/mybatis-3/zh/index.html
  • GitHub : https://github.com/mybatis/mybatis-3

如何获得MyBatis

  • Maven
  • Github:
  • 中文文档
  • Maven仓库

什么是持久层

数据持久化

  • 持久化是将程序的数据在持久状态瞬时状态转化的过程
  • 即把数据 (如内存中的对象)保存到可永久存储的设备(如硬盘上)
  • 数据持久化的方式:数据库(jdbc),io文件持久化
  • 生活:冷藏、罐头
  • 为什么要持久化?
  • 内存:断电即失
  • 有一些对象不能丢掉
  • 内存太贵

持久层

Dao层、Service层、Controller层

  • 完成持久化工作的代码块 Dao(Data Access Object数据访问对象)层
  • 持久化的实现过程大多是通过各种关系化数据库完成的
  • 层界限十分明显

为什么需要MyBatis

  • 帮助程序员将数据存入数据库中
  • 半自动的ORM框架(Object Relation Mapping)—>对象关系映射
  • 传统的JDBC代码太复杂,简化
  • 不用MyBatis也可以
  • 优点:
  • 简单易学:本身小巧,没有第三方依赖。安装只要两个jar文件和配置几个sql映射文件就可以
  • 灵活:SQL写在xml里,便于统一管理
  • 解除sql与代码的耦合:提高了可维护性
  • 提供映射标签,支持对象与数据库的orm关系字段映射
  • 提供对象关系映射,支持对象关系组件维护
  • 提供xml标签,支持编写动态sql

框架:依照模板自动化

MyBatis第一个程序

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

搭建实验数据库

CREATEDATABASE`mybatis`;

USE`mybatis`;

DROPTABLEIFEXISTS`user`;

CREATETABLE`user`(

   `id`int(20)NOTNULL,

   `name`varchar(30)DEFAULTNULL,

   `pwd`varchar(30)DEFAULTNULL,

   PRIMARYKEY(`id`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8;

insertinto`user`(`id`,`name`,`pwd`)values(1,'ks','123456'),(2,'张三','abcdef'),(3,'李四','987654');

新建一个普通的Maven项目

  1. 导入MyBatis相关jar包
  • Github上找

<dependencies>

       <dependency>

           <groupId>org.mybatis</groupId>

           <artifactId>mybatis</artifactId>

           <version>3.5.2</version>

       </dependency>

       <dependency>

           <groupId>mysql</groupId>

           <artifactId>mysql-connector-java</artifactId>

           <version>5.1.47</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>

           <filtering>false</filtering>

       </resource>

       <resource>

           <directory>src/main/java</directory>

           <includes>

               <include>**/*.properties</include>

               <include>**/*.xml</include>

           </includes>

           <filtering>false</filtering>

       </resource>

   </resources>

</build>

  • 创建一个Maven子项目

编写MyBatis核心配置文件

  • 查看帮助文档 mybatis-config.xml

<?xmlversion="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration

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

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

<!--configuration核心配置文件-->

<configuration>

   <environmentsdefault="development">

       <environmentid="development">

           <transactionManagertype="JDBC"/>

           <dataSourcetype="POOLED">

               <propertyname="driver"value="com.mysql.jdbc.Driver"/><!--&amp;相当于&  在xml中需要转义-->

               <propertyname="url"value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>

               <propertyname="username"value="root"/>

               <propertyname="password"value="123456"/>

           </dataSource>

       </environment>

   </environments>

   <mappers>

       <mapperresource="com/kuang/dao/UserMapper.xml"/>

   </mappers>

</configuration>

1.jpg

编写MyBatis工具类

  • 查看帮助文档 com.kuang.dao MybatisUtil

importorg.apache.ibatis.io.Resources;

importorg.apache.ibatis.session.SqlSession;

importorg.apache.ibatis.session.SqlSessionFactory;

importorg.apache.ibatis.session.SqlSessionFactoryBuilder;

importjava.io.IOException;

importjava.io.InputStream;

publicclassMybatisUtils {

   privatestaticSqlSessionFactorysqlSessionFactory;

   static {

       try {

           // 获取SqlSessionFactory对象

           Stringresource="mybatis-config.xml";

           InputStreaminputStream=Resources.getResourceAsStream(resource);

           sqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);

       } catch (IOExceptione) {

           e.printStackTrace();

       }

   }

   //获取SqlSession连接

   publicstaticSqlSessiongetSession(){

       returnsqlSessionFactory.openSession();

   }

}

创建实体类

publicclassUser {

   privateintid; //id

   privateStringname; //姓名

   privateStringpwd; //密码

   //构造,有参,无参

   //set/get

   //toString()

}

 

编写Mapper接口类

importcom.kuang.pojo.User;

importjava.util.List;

publicinterfaceUserDao {

    List<User>getUserList();

}

编写Mapper.xml配置文件

  • namespace十分重要,不能写错 UserMapper.xml

<?xmlversion="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper

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

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

<!--namespace  绑定一个对应的Dao/Mapper接口-->

<mappernamespace="com.kuang.dao.UserDao">

   <!--select查询语句 id对应方法名  resultType返回一个结果集-->

   <selectid="getUserList"resultType="com.kuang.pojo.User">

       select * from user

   </select>

</mapper>

编写测试类

  1. junit测试
    2.jpg

publicclassMyTest {

@Test

   publicvoidselectUser() {

       // 通过MybatisUtils获得工具类创建出的Session

       SqlSessionsession=MybatisUtils.getSession();

       //方法一:

       //List<User> users =

       session.selectList("com.kuang.mapper.UserMapper.selectUser");

       

       //方法二:

       UserMappermapper=session.getMapper(UserMapper.class);

       // 获得映射(使得可以通过接口生成对象)

       List<User>users=mapper.selectUser();

       for (Useruser: users){

           System.out.println(user);

       }

       session.close();

   }

}

 

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
2
分享
相关文章
Mybatis学习:Mybatis缓存配置
MyBatis缓存配置包括一级缓存(事务级)、二级缓存(应用级)和三级缓存(如Redis,跨JVM)。一级缓存自动启用,二级缓存需在`mybatis-config.xml`中开启并配置映射文件或注解。集成Redis缓存时,需添加依赖、配置Redis参数并在映射文件中指定缓存类型。适用于查询为主的场景,减少增删改操作,适合单表操作且表间关联较少的业务。
mybatis复习01,简单配置让mybatis跑起来
文章介绍了MyBatis的基本概念、历史和特点,并详细指导了如何配置MyBatis环境,包括创建Maven项目、添加依赖、编写核心配置文件、创建数据表和实体类、编写Mapper接口和XML配置文件,以及如何编写工具类和测试用例。
mybatis复习01,简单配置让mybatis跑起来
后端框架的学习----mybatis框架(3、配置解析)
这篇文章详细介绍了MyBatis框架的核心配置文件解析,包括环境配置、属性配置、类型别名设置、映射器注册以及SqlSessionFactory和SqlSession的生命周期和作用域管理。
后端框架的学习----mybatis框架(3、配置解析)
|
4月前
|
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
78 1
mybatis1.常见配置
本文介绍了MyBatis框架中的常见配置及其加载顺序。配置可通过`properties`元素、资源文件或方法参数传递,其中方法参数传递的属性具有最高优先级。文章列举了几个重要的配置项,如`cacheEnabled`用于全局开启或关闭缓存功能;`lazyLoadingEnabled`控制对象的延迟加载行为;`useGeneratedKeys`允许JDBC支持自动生成主键;`defaultExecutorType`设定默认执行器类型等。此外,还介绍了多环境配置方法,通过`environments`元素可定义不同环境下的数据库连接信息,并可根据需求动态选择加载特定环境
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
139 3
SpringBoot配置Mybatis注意事项,mappers层下的name命名空间,要落实到Dao的video类,resultType要落到bean,配置好mybatis的对应依赖。
SpringBoot配置Mybatis注意事项,mappers层下的name命名空间,要落实到Dao的video类,resultType要落到bean,配置好mybatis的对应依赖。
Mybatis-Plus乐观锁配置
Mybatis-Plus乐观锁配置
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
接口模板,文本常用的接口Controller层,常用的controller层模板,Mybatisplus的相关配置
接口模板,文本常用的接口Controller层,常用的controller层模板,Mybatisplus的相关配置