MyBatis 基础+环境搭建+案例


一、框架的介绍

在这里插入图片描述

1. 三层架构

  • 表现层:用于展示数据;
  • 业务层:处理业务需求;
  • 持久层:和数据库交互;

2. 持久层技术解决方案

  • JDBC 技术:Connection,PreparedStatement,ResultSet;
  • Spring 的 JdbcTemplate:对 Jdbc 的简单封装;
  • Apache 的 DBTuils:对 Jdbc 的简单封装;

注意:以上这些都不是框架,JDBC 是规范,Spring 的 JdbcTemplate 和 Apache 的 DBTuils 都是工具类

二、MyBatis 的概念

1. MyBatis 概述

在这里插入图片描述

三、MyBatis 的环境搭建

1. 创建 maven 工程

在这里插入图片描述
在这里插入图片描述

2. 配置 pom.xml 文件

在这里插入图片描述
pom.xml 文件内容如下

<?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>org.example</groupId>
    <artifactId>MyBatisTest1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>
    </dependencies>

</project>

3. 创建实体类和 dao 接口

在这里插入图片描述
User.class 如下:

package domain;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable {
    
    
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

    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 Date getBirthday() {
    
    
        return birthday;
    }

    public void setBirthday(Date birthday) {
    
    
        this.birthday = birthday;
    }

    public String getSex() {
    
    
        return sex;
    }

    public void setSex(String sex) {
    
    
        this.sex = sex;
    }

    public String getAddress() {
    
    
        return address;
    }

    public void setAddress(String address) {
    
    
        this.address = address;
    }

    @Override
    public String toString() {
    
    
        return "domain.User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

IUserDao 接口如下:

package dao;

import domain.User;

import java.util.List;

/**
 * 用户的持久层接口
 */
public interface IUserDao {
    
    
    /**
     * 查询所有操作
     * @return
     */
    List<User> findAll();
}

4. 创建 MyBatis 的主配置文件

在这里插入图片描述
SqlMapConfig.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">

<!-- mybatis 的主配置文件 -->
<configuration>
    <!-- 配置环境 -->
    <environments default="mysql">
        <!-- 配置mysql环境 -->
        <environment id="mysql">
            <!-- 配置事务的类型 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源(连接池) -->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的4个基本信息 -->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatisdata"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 指定映射文件的位置,映射配置文件指的是每个 dao 独立的配置文件 -->
    <mappers>
        <mapper resource="dao/IUserDao.xml"/>
    </mappers>
</configuration>

5. 创建映射配置文件

在这里插入图片描述
IUserDao.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">

<mapper namespace="dao.IUserDao">
    <!--配置 查询所有-->
    <select id="findAll">
        select * from user
    </select>
</mapper>

环境搭建的注意事项

在这里插入图片描述

四、MyBatis 入门案例

1. 数据库的准备

在这里插入图片描述
数据库表如下:
创建数据库表的代码如下:

CREATE TABLE `user`(
	`id` int(11) NOT NULL auto_increment,
	`username` varchar(32) NOT NULL COMMENT '用户名称',
	`birthday` datetime DEFAULT NULL COMMENT '生日',
	`sex` char(1) DEFAULT NULL COMMENT '性别',
	`address` varchar(256) DEFAULT NULL COMMENT '地址',
	PRIMARY KEY (`id`),
)ENGINE=INNODB DEFAULT CHARSET=utf8;

2. 创建测试类

在这里插入图片描述
MybatisTest.class 如下:

import dao.IUserDao;
import domain.User;
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.InputStream;
import java.util.List;

/**
 * mybatis 的入门案例
 */
public class MybatisTest {
    
    
    public static void main(String[] args) throws Exception{
    
    
        //1.读取配置文件
        //2.创建一个 SqlSessionFactory 工厂
        //3.使用工厂生产 SqlSession 对象
        //4.使用 SqlSession 创建 Dao 接口的代理对象
        //5.使用代理对象执行方法
        //6.释放资源

        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建一个 SqlSessionFactory 工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产 SqlSession 对象
        SqlSession  session = factory.openSession();
        //4.使用 SqlSession 创建 Dao 接口的代理对象
        IUserDao userDao = session.getMapper(IUserDao.class);
        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for (User user: users){
    
    
            System.out.println(user);
        }
        //6.释放资源
        session.close();
        in.close();
    }
}

3. 增加配置文件

在这里插入图片描述
配置文件内容如下:

log4j.rootLogger=INFO,CONSOLE
log4j.addivity.org.apache=true
 
# console
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.Encoding=UTF-8
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[demo] %-5p %d{
    
    yyyy-MM-dd HH\:mm\:ss} - %C.%M(%L)[%t] - %m%n
 
# all
log4j.logger.com.demo=INFO, DEMO
log4j.appender.DEMO=org.apache.log4j.RollingFileAppender
log4j.appender.DEMO.File=${catalina.base}/logs/demo.log
log4j.appender.DEMO.MaxFileSize=50MB
log4j.appender.DEMO.MaxBackupIndex=3
log4j.appender.DEMO.Encoding=UTF-8
log4j.appender.DEMO.layout=org.apache.log4j.PatternLayout
log4j.appender.DEMO.layout.ConversionPattern=[demo] %-5p %d{
    
    yyyy-MM-dd HH\:mm\:ss} - %C.%M(%L)[%t] - %m%n

4. 修改映射配置文件

IUserDao.xml 如下:
在这里插入图片描述

5. 运行测试类

运行结果如下:
在这里插入图片描述


小结

  1. 数据库的部分简单说了一下,需要详细了解的,可以参考—> 使用 Navicat 创建数据库,并用 JDBC 进行连接
  2. 在配置 xml 文件中,一些字符需要转义,比如 & 要转义为 &amp;,要记得加分号,不要只写了前面的字母;

这是第一次接触 web 的框架,很多知识也不了解,如果上面有写错的地方,欢迎留言,共同学习。

猜你喜欢

转载自blog.csdn.net/pary__for/article/details/111625230