首页 专题 文章 代码 归档
Mybatis简介与项目目录建立
2020.02.04 10:56 2020.02.04 10:56

1. 简介

Mybatis的前身是Apache的开源框架iBatis,与Hibernate一样是一个Java持久层的框架。

Mybatis的优势在于灵活,它几乎可以替代JDBC,同时提供了接口编程。

目前Mybatis的数据访问层DAO(Data Access Object)是不需要实习类的,它只需要一个接口和XML(或者注解),建议使用注解来实现。

Mybatis提供自动映射,动态SQL,级联,缓存,注解,代码和SQL分离等特性,使用方便,同时也对SQL进行优化。

因为其具有封装少,映射多样化,支持存储过程,可以进行SQL优化等特点,是的它取代了Hibernate成为Java互联网中首选持久层框架。

2. 优点

  • 不屏蔽SQL,意味着可以更为精确定位SQL语句,可以对其进行优化和改造,这有利于互联网系统性能的提高,符合互联网需要性能优化的特点。
  • 提供强大、灵活的映射机制,方便Java开发者使用。提供动态SQL的功能,允许我们根据不同组装SQL,这个功能远比其他工具或者Java编码的可读性和可维护性高得多,满足各种应用系统的同时也满足了需求经常变化的互联网应用的要求。
  • 在Mybatis中,提供了使用Mapper的接口编程,只需一个接口和一个XML就能创建映射器,一进步简化我们的工作,使得很多框架API和Mybatis中消失,开发者更能集中于业务逻辑

3. 项目目录建立

本次我们还是使用Maven管理依赖,所以我们还是在IDEA中建立Maven项目。

截图-1580728392

4. 导入依赖

4.1. Mybatis

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.3</version>
</dependency>

Tips:我们这里使用的是Maven管理依赖,你也可以手动导入jar包。

4.2. log4j

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.13.0</version>
</dependency>

log4j是一个打印日志的jar包,可以打印程序运行过程中的一些核心代码、错误、运行过程等等。

这可以方便我们在调试Mybatis的过程中,观察SQL语句是否错误等等。

要使用log4j,除了导包,还需要在源码目录下,新建log4j.properties文件:

### 设置###
log4j.rootLogger = DEBUG,stdout
#log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=F:/logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = F:/logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=F:/logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =F:/logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

4.3. JDBC

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.48</version>
</dependency>

Tips:上面的jdbc的包是mysql5.x的,如果是mysql8.x,需要使用更高版本,请到Maven仓库看:

https://mvnrepository.com/artifact/mysql/mysql-connector-java

4.4. Junit

Junit供我们做单元测试来用:


<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

5. 需要的SQL

暂时只需要下面一个SQL:

CREATE TABLE `employee`  (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `last_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `gender` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

对应建立bean类:

package com.misiai.bean;

public class Employee {
    private Integer id;
    private String lastName;
    private String email;
    private String gender;

    public Employee() {
    }

    public Employee( String lastName, String email, String gender) {
        this.lastName = lastName;
        this.email = email;
        this.gender = gender;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}
本节阅读完毕! (分享
二维码图片 扫描关注我们哟