Mybatis框架的基本使用

本文详细介绍了MyBatis框架的基本概念、作用以及如何使用。通过一个实际的案例,展示了MyBatis如何与MySQL数据库交互,包括创建数据库表、实体类、接口、映射文件以及核心配置文件的配置。最后,通过单元测试执行查询操作,输出用户信息,展示了MyBatis提升开发效率和系统稳定性的特点。
摘要由CSDN通过智能技术生成
什么是框架
  • 框架是一个半成品,我们可以基于半成品继续完善,来实现个性化开发。程序开发中框架是对常见功能的封装,可以把框架理解为软件的设计规范或者是标准化的组件,我们可以重复使用框架中定义的功能和组件,提升开发效率
框架能够解决什么问题
  • 解决了技术通用问题,做到技术统一
  • 提升了开发效率
  • 提升了系统的稳定性,一个成熟的框架,经过了在众多企业项目中的验证使用,稳定性有保障
MyBatis框架的介绍
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射

MyBatis的两种映射方式:
1.通过XML映射
2.通过注解映射

MyBatis的一个入门案例
需求:利用Mybatis框架,从MySQL中查询所有的用户

在这里插入图片描述

  • 环境搭建----准备数据
CREATE SCHEMA `study_mybatis_01_01` DEFAULT CHARACTER SET utf8 ;
use study_mybatis_01_01 ;

create table t_user (
  id int primary key auto_increment,
  username varchar(20) not null,
  birthday date,
  sex char(1) default '男',
  address varchar(50)
);

insert into t_user values (null, '孙悟空','1980-10-24','男','花果山水帘洞');
insert into t_user values (null, '白骨精','1992-11-12','女','白虎岭白骨洞');
insert into t_user values (null, '猪八戒','1983-05-20','男','福临山云栈洞');
insert into t_user values (null, '玉面狐','1995-03-22','女','积雷山摩云洞');
insert into t_user values (null, '玉兔精','2010-02-12','女','天竺国皇宫');
insert into t_user values (null, '豹子精','2008-05-03','男','隐雾山折岳洞');
  • 环境搭建----创建空项目

在这里插入图片描述

创建创建MyBatis_Demo模块(maven项目)

坐标如下
在这里插入图片描述

效果如下
在这里插入图片描述

  • 环境搭建----添加maven依赖
<!--junit-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

<!--mybatis依赖-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.5</version>
</dependency>
<!--mysql数据库驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
</dependency>
  • 环境搭建----添加查询数据库的User实体类
    com.itheima.entity.User.java

package com.itheima.entity;

import java.util.Date;

public class User {
    private Integer id;
    private String userName;
    private Date birthday;
    private String sex;
    private String homeAddress;

    public User() {
    }

    public User(Integer id, String userName, Date birthday, String sex, String homeAddress) {

        this.id = id;
        this.userName = userName;
        this.birthday = birthday;
        this.sex = sex;
        this.homeAddress = homeAddress;
    }

    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 getHomeAddress() {
        return homeAddress;
    }

    public void setHomeAddress(String homeAddress) {
        this.homeAddress = homeAddress;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", homeAddress='" + homeAddress + '\'' +
                '}';
    }
}

  • 环境搭建----UserMapper接口
    这个接口其实就是数据访问层:DAO层
    com.itheima.dao.UserMapper.java
package com.itheima.dao;

import com.itheima.entity.User;

import java.util.List;

/**
 数据访问层方法
 */
public interface UserMapper {

    /**
     * 查询所有
     * @return
     */
    List<User> selectAll();

}
  • 环境搭建----接口映射文件
    在src/main/resources目录下创建UserMapper.xml映射文件
    映射文件的模板可以在http://www.mybatis.org/mybatis-3/zh/getting-started.html找到
    src/main/resources/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   命名空间,指定接口的全限定名
-->
<mapper namespace="com.itheima.dao.UserMapper">
    <!--
    查询语句
    id  接口中方法的名字
    resultType  返回值类型
    -->
    <select id="selectAll" resultType="com.itheima.entity.User">
        select * from t_user
    </select>
</mapper>
  • 环境搭建----核心配置文件
    可以在Mybatis官网入门中找到配置模板

http://www.mybatis.org/mybatis-3/zh/getting-started.html

src/main/resources/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>

    <environments default="default">
        <!--环境变量-->
        <environment id="default">
            <!--事务管理器:由JDBC管理事务 -->
            <transactionManager type="JDBC"/>
            <!--数据源配置信息:POOLED 使用连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/study_mybatis_01_01?useUnicode=true&amp;characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 加载映射文件 -->
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>
  • 完整结构
    在这里插入图片描述

  • 测试

  1. 通过框架提供的Resources类,加载mybatis-config.xml,得到文件输入流InputStream对象
  2. 实例化会话工厂建造类SqlSessionFactoryBuilder
  3. 通过上面的SqlSessionFactoryBuilder对象,读取核心配置文件的输入流,得到会话工厂SqlSessionFactory
  4. 使用SqlSessionFactory对象,创建SqlSession对象
    1. 它相当于JDBC中的Connection对象,提供了操作数据库的CRUD方法
    2. 它提供了一个getMapper()方法,获取接口的实现对象。
  5. 获取接口的对象UserMapper,得到接口的代理对象
  6. 执行数据库的查询操作,输出用户信息
  7. 关闭会话,释放资源
package com.itheima.dao;

import com.itheima.entity.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 org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class UserMapperTest {

    @Test
    public void selectAll() throws IOException {
        //1. 获取核心配置文件,得到输入流对象
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        //2. 构造会话工厂建造类
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        //3. 通过建造类得到会话工厂
        SqlSessionFactory factory = builder.build(inputStream);
        //4. 通过会话工厂得到会话对象
        SqlSession session = factory.openSession();
        //5. 通过会话对象得到UserMapper接口的代理对象
        UserMapper userMapper = session.getMapper(UserMapper.class);
        //6. 执行查询操作
        List<User> users = userMapper.selectAll();
        for (User user : users) {
            System.out.println(user);
        }
        //7. 关闭会话
        session.close();
    }
}
  • Logging(日志)

  • 系统日志
    记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。
    系统日志包括系统日志、应用程序日志和安全日志。

  • 业务日志
    记录web服务器接收处理请求以及运行时错误等各种原始信息以.log结尾的文件。我们通过对日志进行统计、分析、综合,就能有效地掌握网站运行状况,发现和排除错误原因,了解客户访问分布等,更好的加强系统的维护和管理。

  • 在项目中添加日志
    1.pom.xml引入log4j的坐标

<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
</dependency>

2.mybatis-config.xml加入日志设置

<!-- 指定使用log4j输出日志-->
<settings>
  <setting name="logImpl" value="LOG4J"/>
</settings>

3.在src/main/resoures目录下创建log4j.properties文件,内容如下:

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

重新执行update操作的单元测试方法,效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值