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

相关推荐

  • Spring Boot的常用注解

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

    2024年8月29日
    340
  • 创建JavaScript对象的六种方式

    第一种:Object 构造函数创建 这行代码创建了 Object 引用类型的一个新实例,然后把实例保存在变量 Person 中。 第二种:使用对象字面量表示法 对象字面量是对象定义…

    2020年6月24日
    1.3K
  • 日常开发 26 个常见的 JavaScript 代码优化方案

    1、NULL、Undefined、”【空】检查 我们在创建新变量赋予一个存在的变量值的时候,并不希望赋予null或undefined,我们可以采用以下简洁的赋值方式。 …

    2021年2月22日
    1.2K
  • servlet学习之获取表单数据(IDEA2020.2篇)

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

    2020年9月8日
    1.4K
  • 网页布局之三栏网页宽度自适应布局

    在工作中经常遇到网页布局错乱的问题,往往引发的这种问题都是因为不同设备不同分辨率而导致。归根结底,是因为前端工程师经验不足,代码写得不够完好。以下是我总结及从网络搜集的一些网页布局…

    2018年10月8日
    2.9K
  • Java自学之String类

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

    2020年11月30日
    1.4K
  • MySQL数据库入门知识点整理

    数据库基本操作 1、创建数据库语句 数据库名称有以下几点要求 不能与已存在的数据库名称相同; 由字母、数字、下划线、@、$和#符号组成; 不能以数字及$符号开头; 标识符不能使用M…

    2020年7月7日
    1.5K
  • 创建vue3 + typescript项目说明

    创建项目 选择Manually select features【手动配置】 如上图选择配置项,并在下一步,选择3.x 接下来,按照推荐设置,进行选择【推荐设置都已英文字母大写的形式…

    2023年11月23日
    551
  • STS插件mybatis-generator安装及使用

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

    2019年12月27日
    2.2K
  • Java自学之继承

    在面向对象的设计过程中,类是基本的逻辑单位。但是对于这些基本的逻辑单位需要考虑到重用的设计问题,所以在面向对象的设计里提供有继承,并利用这一特点实现类的可重用性定义。 类继承定义 …

    2020年12月3日
    1.3K