如何搭建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

Like (0)
Donate 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
Previous 2022年4月2日
Next 2022年4月18日

相关推荐

  • servlet学习之获取表单数据(IDEA2020.2篇)

    首先,创建一个servlet工程。 如果你不会用IDEA2020.2创建servlet工程,请打开下面链接浏览网站博文。 https://www.edu24.cn/course/j…

    2020年9月8日
    1.3K
  • Java自学之泛型

    在Java语言中,为了方便接收参数类型的统一,提供了核心类Object,利用此类对象可以接收所有类型的数据(包括基本数据类型和引用数据类型)。但是由于其所描述的数据范围过大,所以在…

    2020年12月8日
    1.2K
  • CSS中的BFC是什么

    定义 一个块格式化上下文(block formatting context) 是Web页面的可视化CSS渲染出的一部分。它是块级盒布局出现的区域,也是浮动层元素进行交互的区域。 触…

    2022年11月5日
    401
  • Webpack入门,模块打包之CommonJS与ES6 Module的区别

    前面几篇文章分别介绍了CommonJS和ES6 Module两种形式的模块定义,这篇将介绍下两者各自的特性。 动态与静态 CommonJS与ES6 Module最本质的区别在于前者…

    2022年11月12日
    668
  • spring4.x学习之用户登录与注册

    在之前的文章中我已经把后端工程项目创建好了,接下来就是编写项目了。 首先,我先创建一个数据库。数据库使用的是MySQL,数据库管理工具用的是Navicat。 打开数据库管理工具Na…

    2019年3月21日
    1.8K
  • vue3.0项目如何配置路径别名

    vue更新到3.0以后,在项目中已经深度集成了webpack,使用vue create命令新建项目之后,已经没有webpack配置文件了,这对于像小编这样没有系统学习过前端的同学来…

    2020年8月22日
    3.9K
  • Webpack入门,资源处理流程

    在前几篇的文章中,梳理了Webpack的模块打包功能。可以把Webpack打包模块理解成类似于工厂中的产品组装,也就是把一个个零部件拼起来得到最终的成品。接下来的几篇,则主要要关注…

    2022年11月18日
    481
  • Webpack入门,样式预处理

    样式预处理指的是开发者在开发过程中经常会使用一些样式预编译语言,如SCSS、Less等,在项目打包过程中再将这些预编译语言转换成CSS。借助这些语言强大和便捷的特性,可以降低项目的…

    2022年11月25日
    556
  • 外层有一个自适应高度的div,里面有两个div,一个高度固定300px,另一个怎么填满剩余的高度?

    可以设置外层自适应高度的容器为flex布局,利用flex-basis属性即可实现自动填满剩余高度;代码如下:

    2021年2月22日
    1.2K
  • Webpack入门,样式处理

    除了JavaScript以外,Webpack在打包方面另一个重要的工作就是样式处理。在具有一定规模的工程中,由于手工维护CSS的成本过于高昂,开发者可能会需要更智能的方案来解决浏览…

    2022年11月24日
    486