MyBatis简介及配置

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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();

   }

}

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL Java 数据库连接
springboot中配置mybatis别名该怎么写?
springboot中配置mybatis别名该怎么写?
37 0
|
1月前
|
SQL Java 数据库连接
挺详细的spring+springmvc+mybatis配置整合|含源代码
挺详细的spring+springmvc+mybatis配置整合|含源代码
42 1
|
2月前
|
前端开发 Java 数据库连接
Springboot-MyBatis配置-配置端口号与服务路径(idea社区版2023.1.4+apache-maven-3.9.3-bin)
Springboot-MyBatis配置-配置端口号与服务路径(idea社区版2023.1.4+apache-maven-3.9.3-bin)
33 0
|
14天前
|
Java 数据库连接 数据库
MyBatis之旅:从零开始的环境搭建与配置
MyBatis之旅:从零开始的环境搭建与配置
28 1
|
1月前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
15 1
|
1月前
|
SQL Java 数据库连接
mybatis关联配置(一对多配置)
mybatis关联配置(一对多配置)
13 1
|
2月前
|
XML Java 数据库连接
MyBatis入门配置
【2月更文挑战第9天】
MyBatis入门配置
|
2月前
|
缓存 Java 数据库连接
|
3月前
|
算法 Java 数据库连接
实现 MyBatis-Plus 中的配置加密功能(使用 AES 算法)
实现 MyBatis-Plus 中的配置加密功能(使用 AES 算法)
162 0