Mybatis入门之MyBatis基础

一、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();
        }

    }
}

 

posted @ 2019-07-13 16:39  小白2510  阅读(351)  评论(0编辑  收藏  举报