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

相关推荐

  • Webpack入门,预处理器

    一个Web工程通常会包含HTML、JS、CSS、图片、字体等多种类型的静态资源,且这些资源之间都存在着某种联系。对于Webpack来说,所有这些静态资源都是模块,开发者可以像加载一…

    2022年11月21日
    750
  • Webpack入门,模块打包之加载其他类型的模块

    在实际开发中,开发者可能遇到其他类型的模块,比如AMD、UMD模块,虽然这些模块在目前的使用场景已经不多,但是遇到这些模块时仍然需要知道如何处理。 加载非模块化的文件 非模块化文件…

    2022年11月14日
    720
  • Spring Boot的常用注解

    未来的框架趋势是“约定大于配置”,代码的封装会更加严密。开发人员会将更多的精力放在代码的整体优化和业务逻辑上,所以注解式编程会被更加广泛地使用。那么什么是注解?Spring Boo…

    2024年8月29日
    485
  • CSS让内容居中的方法总结

    内容水平居中  分行内元素与块级元素两种情况;其中块级元素又分定宽与不定宽两种情况; 行内元素 首先看它的父元素是不是块级元素,如果是,则直接给父元素设置 te…

    2019年6月28日
    3.4K
  • JavaWeb入门案例之用户注册

    前言 之前把Java的基础知识系统的过了一遍,目前总算可以看懂Java代码了,接下来就是要学习Java开发框架(主要是springMVC)。 下面用一个用户注册的小案例,来总结一下…

    2021年1月13日
    1.7K
  • Webpack入门,资源处理流程

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

    2022年11月18日
    716
  • Java自学之String类

    在实际项目开发中,String是一个必须使用的程序类,可以说是项目的核心组成类。在Java程序里所有的字符串都要求使用【’‘】进行定义,同时也可以利用【+】实现字符串的连接处理。 …

    2020年11月30日
    1.5K
  • 曾被问及的一些关于VUE的面试题

    由于没有系统的专研过VUE,关于VUE的一些理论知识点,没有去挖心思记忆及理解,只是在实际工作中知道怎么去使用。所以曾在面试的过程中被人嫌弃过,这一直是小编的痛点,/(ㄒoㄒ)/~…

    2022年4月2日
    896
  • CSS中的BFC是什么

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

    2022年11月5日
    591
  • STS插件mybatis-generator安装及使用

    断断续续学习Java也有好长时间了,没有师傅带,没有项目练手,学习超级慢,也很烦。视频、书籍翻看了一大推,还是没有目标。 相信滴水成海,外加条条大路通罗马,只要坚持,自己终能达成目…

    2019年12月27日
    2.4K