2021-01-08

本文档详细介绍了MyBatis的快速入门步骤,包括创建Java项目、添加JAR包、配置数据源、定义实体类、创建SQL映射文件、注册Mapper以及编写测试代码查询数据。通过这些步骤,读者可以快速掌握MyBatis的基本使用。
摘要由CSDN通过智能技术生成

MyBatis

概述:
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

mybatis快速入门

准备开发环境

1、创建测试项目,普通java项目即可,如下图所示:
在这里插入图片描述
2、添加相应的jar包
在这里插入图片描述3、创建数据库和表,针对MySQL数据库

在这里插入图片描述
使用MyBatis查询表中的数据

1、添加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">
<configuration>
    <!-- 配置数据源 -->
    <environments default="development">
        <environment id="development">
            <!-- 指定事务管理类型 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源  type指定数据库连接池方式 -->
            <dataSource type="POOLED">
                <!-- 配置数据库相关的连接信息  name值固定 -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:MySQL://localhost:3306/test?serverTimezone=Asia/Shanghai"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

2、定义表所对应的实体类Emp.java,如下图所示:
 在这里插入图片描述

代码如下:


import java.util.Date;

/**
 * 员工信息实体类
 */
public class Emp {

    /**
     * 员工编号
     */
    private int eno;

    /**
     * 员工姓名
     */
    private String ename;

    /**
     * 员工性别
     */
    private String sex;

    /**
     * 联系方式
     */
    private String phone;

    /**
     * 出生日期
     */
    private Date birthday;

    /**
     * 部门编号
     */
    private int dno;

    public int getEno() {
        return eno;
    }

    public void setEno(int eno) {
        this.eno = eno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getSex() {
        return sex;
    }

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

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Date getBirthday() {
        return birthday;
    }

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

    public int getDno() {
        return dno;
    }

    public void setDno(int dno) {
        this.dno = dno;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "eno=" + eno +
                ", ename='" + ename + '\'' +
                ", sex='" + sex + '\'' +
                ", phone='" + phone + '\'' +
                ", birthday=" + birthday +
                ", dno=" + dno +
                '}';
    }
}

3、定义操作Emp表的sql映射文件mapper.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
	例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
	 -->
<mapper namespace="test">
    <!--
        id: sql的唯一标识,
        parameterType: 指定要传入的参数类型
        resultType:指定返回值类型,只有查询操作才会需要返回值类型
        #{val}: 代表占位符,其中的val与实体类中的属性名保持一致
    -->
    <!--
        根据id查询得到一个user对象
     -->
    <select id="queryEmpById" parameterType="java.lang.Integer" resultType="com..bean.Emp">
        select eno,ename,sex,phone,birthday,dno from emp where eno=#{eno}
    </select>
</mapper>

4、在sqlMapConfig.xml文件中注册mapper.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="development">
        <environment id="development">
            <!-- 指定事务管理类型 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源  type指定数据库连接池方式 -->
            <dataSource type="POOLED">
                <!-- 配置数据库相关的连接信息  name值固定 -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:MySQL://localhost:3306/test?serverTimezone=Asia/Shanghai"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
    <!-- 注册mapper.xml文件, 
       mapper.xml与sqlMapConfig.xml位于同一包下,所以resource写成mapper.xml-->
        <mapper resource="mapper.xml"/>
    </mappers>
</configuration>

5、编写测试代码:执行定义的select语句

创建一个Test类,编写如下的测试代码:

import com..bean.Emp;
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.text.ParseException;
import java.text.SimpleDateFormat;

public class MabtisTest {

    @Test
    public void queryEmpList() throws IOException {
    	//mybatis的配置文件
        InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        //构建sqlSession的工厂 获取SqlSessionFactoryBuilder对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        // 创建能执行映射文件中sql的sqlSession
        SqlSession sqlSession = factory.openSession();
        //执行sql
        Emp emp = sqlSession.selectOne("test.queryEmpById",4);
        System.out.println(emp);
        // 关闭SqlSqssion对象
        sqlSession.close();
    }
}

执行结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值