开发者社区> 游客bffwyrxnx7ryy> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

MyBatis简介及配置

简介: 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——>编写代码——>测试

搭建实验数据库

CREATE DATABASE `mybatis`;

USE `mybatis`;

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

   `id` int(20) NOT NULL,

   `name` varchar(30) DEFAULT NULL,

   `pwd` varchar(30) DEFAULT NULL,

   PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into `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

<?xml version="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>

   <environments default="development">

       <environment id="development">

           <transactionManager type="JDBC"/>

           <dataSource type="POOLED">

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

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

               <property name="username" value="root"/>

               <property name="password" value="123456"/>

           </dataSource>

       </environment>

   </environments>

   <mappers>

       <mapper resource="com/kuang/dao/UserMapper.xml"/>

   </mappers>

</configuration>

1.jpg

编写MyBatis工具类

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

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;

   static {

       try {

           // 获取SqlSessionFactory对象

           String resource = "mybatis-config.xml";

           InputStream inputStream = Resources.getResourceAsStream(resource);

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

       } catch (IOException e) {

           e.printStackTrace();

       }

   }

   //获取SqlSession连接

   public static SqlSession getSession(){

       return sqlSessionFactory.openSession();

   }

}

创建实体类

public class User {

   private int id; //id

   private String name; //姓名

   private String pwd; //密码

   //构造,有参,无参

   //set/get

   //toString()

}

 

编写Mapper接口类

import com.kuang.pojo.User;

import java.util.List;

public interface UserDao {

     List<User> getUserList();

}

编写Mapper.xml配置文件

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

<?xml version="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接口-->

<mapper namespace="com.kuang.dao.UserDao">

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

   <select id="getUserList" resultType="com.kuang.pojo.User">

       select * from user

   </select>

</mapper>

编写测试类

  1. junit测试
    2.jpg

public class MyTest {

@Test

   public void selectUser() {

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

       SqlSession session = MybatisUtils.getSession();

       //方法一:

       //List<User> users =

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

         

       //方法二:

       UserMapper mapper = session.getMapper(UserMapper.class);

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

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

       for (User user: users){

           System.out.println(user);

       }

       session.close();

   }

}

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【MyBatis】MyBatis一级缓存和二级缓存(1)
【MyBatis】MyBatis一级缓存和二级缓存
55 0
SAP 前端技术的演化史简介
SAP 前端技术的演化史简介
74 0
SAP 前端技术的演化史简介
Jerry之前曾经写过一篇微信公众号文章,题目叫<> 关注我的公号“汪子熙”后,在历史菜单“前端开发相关”里即可找到这篇文章: 该文章简单回顾了SAP UI技术的发展历史,然后提了下Salesforce的Apex和Lighting Component等技术和框架。
1368 0
Lombok简介
最近发现了一个非常好用的库,叫做Lombok,它可以帮助我们简化一些Java代码的编写。我试用了一下感觉非常好用,所以来介绍一下。 下面对Lombok的简单使用方法做一下总结: val 这不是一个注解,用于局部变量声明,减少重复输入。
921 0
Lombok简介
一般在javaWeb的model层都要用javabean 然后eclipse自动生成getter、 setter方法。 现在有一个更方便的方法就是使用lombok.jar包 帮你自动生成,用注入的方式 使代码更简介 最常用的是这三个方法 @Data @AllArgsConstructor @NoArgsConstructor 更多详情请看这里链接
1187 0
一、MyBatis简介与配置MyBatis+Spring+MySql
 一、MyBatis简介与配置MyBatis+Spring+MySql 2013-09-06 17:03:24 标签:动态 下载地址 MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql MyBatis学习 之 二、SQL语句映射文件(1)resultMap MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存 MyBatis学习 之 三、动态SQL语句 MyBatis学习 之 四、MyBatis配置文件 1.1MyBatis简介      MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。
1571 0
65
文章
149
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载