我是靠谱客的博主 心灵美裙子,最近开发中收集的这篇文章主要介绍JavaWeb项目实战二(Mybatis快速入门)Mybatis,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Mybatis

官方手册:https://mybatis.org/mybatis-3/zh/index.html

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

获取 Mybatis

  1. Maven

    https://mvnrepository.com

  2. Github

    https://github.com/mybatis/mybatis-3

优点:

  1. 简单易学,灵活,使用较多
  2. SQL 和diamagnetic分离,提高可维护性
  3. 提供映射标签,支持对象与数据库的 ORM 字段关系映射
  4. 提供对象关系映射标签,支持对象关系组建维护
  5. 提供 xml 标签,支持编写动态 SQL

演示Demo

环境搭建

项目环境

  1. JDK 1.8
  2. MySQL 5.7
  3. Maven 3.6.1

1.新建数据库 mybatis,新建查询插入数据

CREATE TABLE `user` (
	`id` INT(20) NOT NULL PRIMARY KEY,
	`name` VARCHAR(30) DEFAULT NULL,
	`pwd` VARCHAR(30) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO `user` (`id`,`name`,`pwd`) VALUES
(1,'ocean','12345'),
(2,'jerry','54321')

2.新建 maven 项目

image-20220427173045932

3.导入依赖

    <dependencies>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>

        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

创建模块

项目名右击选择 new 新建 module
image-20220427173707634
image-20220427174143226

1.编写核心配置文件

新建 mybatis-config.xml 配置文件

image-20220427174504822

<?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"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/smbms?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--每一个Mapper.XML 都需要在Mybatis核心配置文件中注册-->
    <mappers>
        <mapper resource="com/ocean/dao/"/>
    </mappers>
</configuration>

注意点:数据库连接 url 中 & 符号需要使用 &amp; 代替,MySQL 8 中需要设置时区

注意:这里每一个Mapper.XML 都需要在Mybatis核心配置文件中注册

2.编写工具类

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例

image-20220427175850453

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 既然有 SqlSessionFactory 可以从中获得 SqlSession 的实例了,Sqlsession 完全包含了面向数据库执行 SQL 命令所需要的方法
    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
}

编写代码

实体类、Dao 接口、接口实现类

实体类

image-20220427193704510

Dao 接口

image-20220427195654720

Mapper 配置文件

接口实现类由原来的 UserDaoImpl 转变为一个 Mapper 配置文件

<?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 用来绑定一个对应的Dao/Mapper 接口-->
<mapper namespace="com.ocean.dao.UserMapper">

    <!--select查询语句-->
    <select id="selectBlog" resultType="com.ocean.pojo.User">
        select * from mybatis.user
    </select>
</mapper>
  • namespace 中的包名要和 mapper 接口的包名一致
  • resultType:Sql 语句返回结果

测试

public class UserMapperTest {

    @Test
    public void test() {
        // 1.获得 sqlsession 对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        // 执行sql
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = mapper.getUserList();

        for (User user:userList
             ) {
            System.out.println(user);
        }

        // 关闭SqlSession,关闭操作很重要建议放到finally中
        sqlSession.close();
    }
}

坑点:Maven 项目配置中约定大于配置文件,所以推荐在每个 Maven 配置 xml 文件中加上以下配置

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

最后

以上就是心灵美裙子为你收集整理的JavaWeb项目实战二(Mybatis快速入门)Mybatis的全部内容,希望文章能够帮你解决JavaWeb项目实战二(Mybatis快速入门)Mybatis所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(87)

评论列表共有 0 条评论

立即
投稿
返回
顶部