搭建第一个MyBatis

本文介绍了MyBatis的历史和特性,然后详细阐述了如何搭建第一个MyBatis项目,包括创建数据库和表,建立Maven工程,配置pom.xml,创建MyBatis核心配置文件,定义实体类和Mapper接口,编写映射文件,并通过JUnit进行测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyBatis简介

MyBatis历史

MyBatis 本是 apache 的一个开源项目iBatis, 2010 年这个项目由 apache software foundation 迁移到了 google code,并且改名为 MyBatis 。2013 年 11 月迁移到 Github。

iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBatis提供的持久层框架,包括SQL Maps和Data Access Objects(DAO)。

MyBatis的特性

  • MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
  • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
  • MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录
  • MyBatis 是一个 半自动的ORM(Object Relation Mapping)框架

MyBatis完成数据访问层的优化.它专注于sql语句.简化了过去JDBC繁琐的访问机制.

轻量级,性能出色
SQL 和 Java 编码分开,功能边界清晰。Java代码专注业务、SQL语句专注数据
开发效率稍逊于HIbernate,但是完全能够接受

mybatis中文文档:mybatis中文网

搭建第一个MyBatis

开发步骤:

  1. 建库,建表
  2. 创建maven工程,补充缺失目录
  3. 修改pom.xml文件:添加所需依赖和相关配置
  4. 创建MyBatis核心配置文件
  5. 创建实体类,创建mapper接口
  6. 创建MyBatis的映射文件
  7. 通过Junit测试

建库,建表

创建maven工程,补充缺失目录

修改pom.xml文件:添加所需依赖和相关配置

添加依赖:

<dependencies>
    <!--添加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.6</version>
    </dependency>
    <!--  添加mysql依赖  -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.32</version>
    </dependency>
</dependencies>

指定资源文件路径:保证src目录中的所有资源文件都拷贝到target中

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
        </resource>
    </resources>
</build>

创建MyBatis核心配置文件

添加jdbc的属性配置文件

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8
#jdbc.url=jdbc:mysql://localhost:3308/ssm?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
jdbc.username=root
jdbc.password=root

创建核心配置文件

<?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>
    <!--读取属性配置文件-->
    <properties resource="jdbc.properties"></properties>
    <!--配置数据库环境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClassName}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--注册mapper映射文件-->
    <mappers>
        <mapper resource="UserMapper.xml"></mapper>
    </mappers>
</configuration>

创建实体类,创建mapper接口

MyBatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要
提供实现类。

public interface UserMapper {
    List<User> selectAllUsers();
}

创建MyBatis的映射文件

<?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="com.ityg.mapper.UserMapper">
    <!--List<User> selectAllUsers();-->
    <select id="selectAllUsers" resultType="com.ityg.pojo.User">
        select id,username,birthday,sex,address from users
    </select>
</mapper>

通过Junit测试

@Test
public void testSelectAllUser() throws IOException {
    // 读取MyBatis的核心配置文件
    InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");

    //创建SqlSessionFactoryBuilder对象
    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

    //通过核心配置文件所在的字节流创建工厂类SQLSessionFactory,来生成SqlSession对象
    SqlSessionFactory factory = builder.build(is);

    //创建SqlSession对象,此时通过SqlSession对象所操作的sql都必须手动提交或回滚事务
    SqlSession sqlSession = factory.openSession();
    //创建SqlSession对象,此时通过SqlSession对象所操作的sql都会自动提交
    // SqlSession sqlSession = factory.openSession(true);

    //没有使用动态代理
    // List<Object> list = sqlSession.selectList("selectAllUsers");

    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    List<User> list = mapper.selectAllUsers();
    list.forEach(user -> System.out.println(user));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值