JavaWeb项目实战二(Mybatis快速入门)

Posted OceanSec

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb项目实战二(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 项目

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

1.编写核心配置文件

新建 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="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 实例

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 接口、接口实现类

实体类

Dao 接口

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快速入门)的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb项目实战三(Spring快速入门IOC)

JavaWeb项目实战三(Spring快速入门IOC)

13.2 MyBatis Generator 快速入门(MyBatis Generator逆向代码生成工具) -《SSM深入解析与项目实战》

JavaWEB04-Maven&Mybatis

MyBatis 框架之快速入门程序

MyBatis 框架之快速入门程序