如何搭建MyBatis开发环境

进入一段时间的学习及温习,已经可以说是初步掌握了Javaweb入门开发,由于我的中心思想是抛弃JSP,做纯粹的前后端分离项目,所以接下来计划学习持久层开发,现在主流的持久层开发工具是mybatis。看了一遍相关教程,理论知识看的似懂非懂。看来还得上手写代码,才能掌握透彻啊。

工程环境说明

本文工程使用的是jdk1.8+tomcat8,及mybatis-3.5.9。数据库是MySQL5.7。编辑器使用的是IDEA2021.3.3

新建项目工程

使用IDEA,新建一个web工程。关于使用新版IDEA怎么新建web工程请访问《如何使用IDEA2020.2新建servlet工程》

在web/WEB-INF目录下新建一个lib目录,并将此目录作为工程的依赖包目录。

具体操作:右击lib目录,选择【Add as Library】即可。

导入依赖包

下载mybatis包,访问【https://github.com/mybatis/mybatis-3】下载对应的mybatis压缩包。

压缩包目录如下图所示

如何搭建MyBatis开发环境
mybatis压缩包

将压缩包中lib目录中的文件及mybatis-3.5.9.jar添加至工程的lib目录。

由于mybatis是需要操作数据库的,所以还需要导入数据库驱动包。本工程使用的是数据库驱动文件是mysql-connector-java-5.1.49.jar。将此包也添加至工程的lib目录。

新建数据库及表

create table t_users
(
    id       bigint auto_increment,
    userId   varchar(255) null comment '用户ID,Java代码生成',
    userName varchar(255) not null comment '用户名,登录名',
    password varchar(255) not null comment '用户密码,mb4加密',
    constraint t_user_pk
        primary key (id)
)
    comment '用户表';

编辑工程文件

在项目工程src目录下新建entity目录【也可命名为pojo】。此目录存放实体类文件。在该目录下新建User类文件。

package entity;

public class User {
    private int Id;
    private String userId;
    private String userName;
    private String password;

    public int getId() {
        return Id;
    }

    public void setId(int id) {
        Id = id;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "Id=" + Id +
                ", userId='" + userId + '\'' +
                ", userName='" + userName + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

在src目录下新建service目录,并在该目录下新建IUser接口类文件。

package service;

import entity.User;

import java.util.List;

public interface  IUser {
    public List<User> queryUsers();
    public User queryUserById(int id);
}

在src目录下新建mappers目录,并在该目录下新建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">
<mapper namespace="service.IUser">
    <!-- 查询全部用户 -->
    <select id="queryUsers" resultType="entity.User">select * from t_users</select>
    <select id="queryUserById" resultType="entity.User" parameterType="int">Select * From t_users Where id=#{id}</select>
</mapper>

在src目录下新建config目录,并在该目录下新建db.properties文件

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test_db?useUnicode=true&characterEncoding=utf8
username=root
password=123456

在config目录下新建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>
    <!-- 引入外部配置文件 -->
    <properties resource="config/jdbc.properties" />
    <!-- 别名 -->
    <!-- 别人配置必须写在properties配置之后  -->
    <typeAliases>
        <typeAlias alias="user" type="entity.User"></typeAlias>
    </typeAliases>
    <!-- 配置mybatis运行环境 -->
    <environments default="development">
        <environment id="development">
            <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
            <transactionManager type="JDBC" />
            <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
            <!-- POOLED 表示支持JDBC数据源连接池 -->
            <!-- UNPOOLED 表示不支持数据源连接池 -->
            <!-- JNDI 表示支持外部数据源连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="mappers/userMapper.xml"/>
    </mappers>
</configuration>

在src目录下新建util目录,并在该目录下新建SqlSessionFactoryUtil工具类

package util;

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 java.io.IOException;
import java.io.InputStream;

public class SqlSessionFactoryUtil{
    private static SqlSessionFactory sqlSessionFactory = null;
    private static final Class CLASS_LOCK = SqlSessionFactoryUtil.class;
    private SqlSessionFactoryUtil(){}
    // 读取配置文件,并初始化SqlSessionFactory【实例化】
    public static SqlSessionFactory initSqlSessionFactory(){
        String resource = "config/mybatis-config.xml";
        InputStream is = null;
        try {
            is = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        synchronized (CLASS_LOCK) {
            if(sqlSessionFactory == null) {
                sqlSessionFactory =  new SqlSessionFactoryBuilder().build(is);
            }
        }
        return sqlSessionFactory;
    }
    // 创建SqlSession(会话)
    public static SqlSession openSqlSession(){
        if(sqlSessionFactory==null){
            initSqlSessionFactory();
        }
        return sqlSessionFactory.openSession();
    }
}

到此,mybatis的开发环境已经算是搭建完成了。

至于如何使用mybatis。可以在src目录下新建一个启动测试类UserTest来测试使用。

import entity.User;
import org.apache.ibatis.session.SqlSession;
import service.IUser;
import util.SqlSessionFactoryUtil;

import java.util.List;

public class UserTest {
    public static void main(String[] args) {
        SqlSession sqlSession=null;
        try {
            sqlSession= SqlSessionFactoryUtil.openSqlSession();
            IUser iUser=sqlSession.getMapper(IUser.class);
            List<User> users=iUser.queryUsers();
            if(users.size()>0){
                for (User user : users) {
                    System.out.println(user.toString());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/mybatis-dev-environment.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
上一篇 2022年4月2日
下一篇 2022年4月18日

相关推荐

  • 一维数组结构数据转换树形结构数据JS方法

    在写小程序项目时,自定义了一个组织机构树形展示组件,后端接口返回的组织机构数据是一维数组。需要在前端转换成树形结构的数据,并且添加一些节点的树形,比如是否为叶子节点,节点是否展开等…

    2022年11月10日
    499
  • CSS卡片堆栈

    在浏览各种APP及网站,往往会发现很多酷炫的布局及样式。搜集一下,补充自己的技能库,借鉴学习一下。 HTML CSS

    2019年12月31日
    2.1K
  • flex布局详解

    往往在移动端开发过程中,弹性布局是非常实用的一种手段。往往你并不需要去反复的使用媒体查询的。整整的响应式布局是使界面能够自动的根据屏幕进行变化,做到完美的弹性布局,在必要的时候,去…

    2018年9月10日
    2.3K
  • 回调函数散记

    今天被将要入职的公司的开发人员询问了一个项目中遇到的问题,关于函数内访问外部函数的情况。大致现象如下:js文件中有两个同级函数FnA和FnB,想在函数FnA中调用FnB。 一看就是…

    2019年8月16日
    1.5K
  • Angular环境搭建(Windows 10)

    目前前端开发正处于快速发展阶段,接触angular时,Angular 2刚刚发布,现在第五版也已经发布。由于刚开始没有系统的学习,导致工作中,经常捉襟见肘。现在把自己在工作中踩过的…

    2018年9月5日
    4.1K
  • 深入理解JS原型和继承

    在学习JS中的原型,原型链,继承这些知识之前,必须先了解并掌握基础知识:函数和对象的关系。 我们一直都知道,函数也是对象的一种,因为通过instanceof就可以判断出来。但是函数…

    2019年6月29日
    2.2K
  • JAVA学习路线之夯实基础

    第一章 开发环境 JDK(Java SE Development Kit),Java标准版开发包,提供编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环…

    2020年1月14日
    1.7K
  • 深入理解JS内存机制

    JS的内存机制在很多前端开发者看来并不是那么重要,但是如果你想深入学习JS,并将它利用好,打造高质量高性能的前端应用,就必须要了解JS的内存机制。对于内存机制理解了以后,一些基本的…

    2019年7月14日
    1.8K
  • js数组去重(区分object、“NaN”、NaN)

    数组去重在前端面试中比较常见,今天来复习复习。 对这样一个数组进行去重,我尝试了几种方法,大多数不能对对象去重,或者不能区分true和”true”、NaN和…

    2021年2月23日
    1.3K
  • CSS多列等高布局

    在项目开发中,经常遇到需要多列等高布局的需求。解决这种的需求的方法有很多,各有利弊,现总结如下。 方法一:使用flex布局 优点:实现方便,还可以方便实现各种比例 ; 缺点: IE…

    2019年6月11日
    2.2K