一、MyBatis概述

1、ORM模型简介

ORM:对象关系映射(Object Relation Mapping)

1)传统JDBC程序的设计缺陷(实际项目不使用)

a.大量配置信息硬编码

b.大量的无关业务处理的编码

c.扩展优化极为不便

2、MyBatis概述

是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架

  • 避免传统JDBC硬编码
  • XML配置或者注解
  • POJO对象和数据库记录直接映射
  • 完善的文档支持

MyBatis的使用优势

  • 简单易学,快速上手,学习成本低
  • 数据库交互信息配置化
  • 动态SQL处理

3、MyBatis使用优势及应用场景

  • 更加关注SQL优化的项目
  • 需求频繁更新改动的项目

二、开发环境搭建

  • MyBatis的下载
  • 项目中引入MyBatis支持
  • 入门程序
  • 了解MyBatis的工作原理

1)获取MyBatis

2)传统项目中使用MyBatis

  • 下载地址

https://github.com/mybatis/mybatis-3/releases

  • 项目中引入

- 作为classpath依赖路径引入
- 作为依赖项目引入

3)maven方式引入

  • 查询配置

step1:http://mvnrepository.com查询maven依赖配置
step2: maven项目的pom.xml中添加配置
step3:查看项目依赖
step4: 了解maven本地仓库

三、入门程序

  • 开发环境

windows + jdk1.8.0u*** + IntelliJ idea + MySQL

  • 需求:完成一个数据的查询流程
  • 目的:了解mybatis核心api的操作流程
  • 扩展:了解mybatis的工作流程

1)创建MVN项目

2)配置pom.xml依赖

step1:查询依赖http://mvnrepository.com,找到版本,复制配置信息

配置mybatis依赖

配置mysql依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.imooc.mybatis</groupId>
<artifactId>mybatisDemo01</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<!-- 数据库依赖 注意mysql版本 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.18</version>
</dependency>
</dependencies> </project>

3)配置mybatis主配置文件

step1:在目录main/resource/中新建mybatis.xml文件

step2:从mybatis官方文档复制配置信息,下载解压mybatis包,里面的pdf文档-getting started

<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!--使用数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mytest"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 映射配置文件的路径 -->
<mappers>
<!-- <mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
</mappers>
</configuration>

4)创建数据库

CREATE DATABASE mytest;
USE mytest; CREATE TABLE users(
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号',
username VARCHAR(50) COMMENT '登录账号',
userpass VARCHAR(50) COMMENT '登录密码',
nickname VARCHAR(20) COMMENT '用户昵称' ); INSERT INTO users VALUES(1,'admin','admin','管理员');
INSERT INTO users VALUES(2,'manager','manager','管理员');
INSERT INTO users VALUES(3,'administator','administator','管理员');

5)在mvn项目中创建实体类

在main/java中新建包com.imooc.entity,新建类Users

package com.imooc.entity;

public class Users {
private Integer id;
private String username;
private String userpass;
private String nickname; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getUserpass() {
return userpass;
} public void setUserpass(String userpass) {
this.userpass = userpass;
} public String getNickname() {
return nickname;
} public void setNickname(String nickname) {
this.nickname = nickname;
}
}

6)在resource中新建mapper文件夹,存放映射配置文件

新建配置文件usersMapper.xml,复制官方文档Exploring Mapped SQL Statements中的信息

<?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命名空间
通常情况,命名空间的值,就是当前操作实体类的全名称
-->
<mapper namespace="com.imooc.entity.Users">
<!-- id是查询的id,resultType是返回值类型-->
<select id="userList" resultType="com.imooc.entity.Users">
select * from users
</select>
</mapper>

7)在test/java中新增测试类TestDemo,使用junit进行测试

使用junit需要在pom.xml中增加依赖

        <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
package com.imooc.test;

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 org.junit.Test;
import com.imooc.entity.Users; import java.io.IOException;
import java.io.InputStream;
import java.util.List; public class TestDemo {
/*
通过junit进行测试
*/
@Test
public void testDemo1() throws IOException {
//初始化mybaits配置环境
String resource = "mybatis.xml";
InputStream is=Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//打开和数据库之间的会话
SqlSession session = sqlSessionFactory.openSession();
try {
List<Users> ulist = session.selectList("userList");
for(Users user:ulist){
System.out.println(user);
}
} finally {
session.close();
} }
}

Mybatis入门之MyBatis基础的更多相关文章

  1. mybatis入门--初识mybatis

    初识mybatis 今天,一起来说说mybits这个框架吧.这是一个持久层的框架.之前叫做ibatis.所以,在它的代码中出现ibatis这个词的时候,不要感到惊讶.不是写错了,它确实就是这个样子的. ...

  2. mybatis入门(三):mybatis的基础特性

    mybatis的知识点: 1.mybatis和hibernate本质区别和应用场景 hibernate:是一个标准的ORM框架(Ojbect relation mapper对象关系映射).入门门槛较高 ...

  3. Mybatis入门篇之基础CRUD

    前言 作为一个资深后端码农天天都要和数据库打交道,最早使用的是 Hiberate,一个封装性极强的持久性框架.自从接触到 Mybatis 就被它的灵活性所折服了,可以自己写 SQL,虽然轻量级,但是麻 ...

  4. Mybatis入门之MyBatis项目案例

    一.项目案例演示 后台管理系统用户数据维护平台 所有用户数据查询 单个用户数据查询 用户数据修改(完善资料) 锁定用户账号 删除用户账号 彻底删除用户账号 二.数据库数据准备工作 数据库:mysql ...

  5. MyBatis入门使用

    MyBatis入门使用 MyBatis简介 MyBatis是支持普通SQL查询.存储过程和高级映射的持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBati ...

  6. mybatis入门案例自定义实现

    mybatis入门案例自定义实现 一.需要实现的类和接口 public static void main(String[] args) throws Exception{ //1.读取配置文件 Inp ...

  7. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...

  8. MyBatis入门基础(一)

    一:对原生态JDBC问题的总结 新项目要使用mybatis作为持久层框架,由于本人之前一直使用的Hibernate,对mybatis的用法实在欠缺,最近几天计划把mybatis学习一哈,特将学习笔记记 ...

  9. MyBatis基础:MyBatis入门(1)

    1. MyBatis简介 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyBatis ...

随机推荐

  1. 前端 CSS层叠性 CSS选择器优先级

    层叠性 层叠性:权重的标签覆盖掉了权重小的标签,说白了 ,就是被干掉了 权重:谁的权重大,浏览器就会显示谁的属性 我们现在已经学过了很多的选择器,也就是说在一个HTML页面中有很多种方式找到一个元素并 ...

  2. mysql中【update/Delete】update中无法用基于被更新表的子查询,You can't specify target table 'test1' for update in FROM clause.

    关键词:mysql update,mysql delete update中无法用基于被更新表的子查询,You can't specify target table 'test1' for update ...

  3. GCD and LCM HDU 4497 数论

    GCD and LCM HDU 4497 数论 题意 给你三个数x,y,z的最大公约数G和最小公倍数L,问你三个数字一共有几种可能.注意123和321算两种情况. 解题思路 L代表LCM,G代表GCD ...

  4. Codeforces 191C (LCA+树上差分算法)

    题面 传送门 题目大意: 给出一棵树,再给出k条树上的简单路径,求每条边被不同的路径覆盖了多少次 分析 解决这个问题的经典做法是树上差分算法 它的思想是把"区间"修改转化为左右端点 ...

  5. Forbidden (CSRF token missing or incorrect.):错误解决办法

    在JS中,使用post方法提交数据到后台,出现错误: Forbidden (CSRF token missing or incorrect.):.........; 解决办法: 在页面导入JS的位置, ...

  6. EA逆向生成数据库E-R图(mysql数据库-->ER图)

    [1]选择 工具-->ODBC-Data-Sources [2]ODBC数据源管理器  ,点击添加 [3]选择一个mysql驱动  ,点击MySQL ODBC 5.1 Driver(其它同理), ...

  7. 初入vue.js(1)

    本文章属于个人在学习vue的随笔,留作与大家分享,技术交流之用,如果有错误,请大家多多指正.谢谢 首先说一下vue的使用方式: vue的使用方式一共有两种,第一种是直接在官网上下载vue.js的文件, ...

  8. JavaScript中的垃圾收集机制

     JavaScript 具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存. 在编写 JavaScript 程序时,开发人员不用再关心内存使用问题,所需内存的分配以及无用内存的 ...

  9. 常见3种Git服务器的构建

    学习Git不同的服务器形式,具体如下: - 创建SSH协议服务器 - 创建Git协议服务器 - 创建HTTP协议服务器 方案: Git支持很多服务器协议形式,不同协议的Git服务器,客户端就可以使用不 ...

  10. Docker之安装缺省指令

    Docker 中有些指令不存在,需要额外的安装,这里做下安装记录. 更新软件源中的所有软件列表 apt-get update 安装 ifconfig apt install net-tools 安装 ...