简单搭建mybatis开发环境

2023-11-01

目录

前言    

1、项目目录结构总览

2、准备工作

2.1 新建测试项目,下载jar包

2.2 创建数据库表(本文使用的mysq数据库)

3、环境搭建

3.1 根据目录结构创建对应文件,导包

3.2 配置资源文件

3.3 department包中代码编写(用于sqlSession调用sql)

3.4 user包中代码编写(用于Mapper接口调用sql)

4、功能测试

4.1 通过sqlSession调用sql

4.2 通过Mapper接口调用sql


前言    

    mybatis 众所周知,很优秀的一款持久层框架,具体的概念就不说了,本文就简单的描述下mybatis开发环境的搭建吧。由于mybatis可以通过sqlSession调用sql(延续ibatis)也可以通过Mapper接口调用sql,所以下面从两部分测试下。

1、项目目录结构总览

2、准备工作

2.1 新建测试项目,下载jar包

    项目需要2类包,一是mysql驱动包,一个是mybatis的jar和日志包,日志包在mybatis下的lib目录里。

    mysql驱动包下载地址:https://dev.mysql.com/downloads/connector/j/
    mybatis的jar包和日志包下载地址:https://github.com/mybatis/mybatis-3/releases

2.2 创建数据库表(本文使用的mysq数据库)

    本文需要创建fw_department和fw_user表,创建表的脚本如下(数据自己加):

CREATE TABLE `fw_department` (
  `depid` varchar(32) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '部门ID',
  `parentdepid` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '父部门ID',
  `depno` varchar(32) COLLATE utf8_bin NOT NULL COMMENT '部门编号',
  `depname` varchar(64) COLLATE utf8_bin NOT NULL COMMENT '部门名称',
  PRIMARY KEY (`depid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

CREATE TABLE `fw_user` (
  `userid` varchar(32) COLLATE utf8_bin NOT NULL COMMENT '人员ID',
  `userno` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '人员编号',
  `username` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '人员姓名',
  PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

3、环境搭建

3.1 根据目录结构创建对应文件,导包

    按照目录结构创建文件,将下载的jar包导入到项目中WEB-INF\lib目录下,并选中所有jar包并点击右键--》Build Path--》Add to Build Path。

3.2 配置资源文件

资源文件包括三部分,分别为jdbc.properties、mybatis-config.xml和log4j.properties
3.2.1 配置jdbc.properties文件内容(用于mybatis全局配置文件),内容如下(根据自己的数据库名称、用户名和密码配置):

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=true
jdbc.username=root
jdbc.password=123456

3.2.2 配置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>
    <!-- configuration 中的标签顺序为:properties>settings>typeAliases>typeHandlers>
    objectFactory>plugins>environments>databaseIdProvider>mappers 其中有的标签可以不设置,
          但是设置的标签顺序应遵循以上顺序    -->

	<!-- 加载jdbc.properties文件 -->
    <properties resource="resources/jdbc.properties">
        <!-- 此处可以对jdbc.properties中的参数重新设置
        <property name="username" value="root" />
         -->
    </properties>
    
    <settings>
        <!-- setting中可配置的参数很多,此处值展示部分参数 -->
        <!-- 是否启用缓存 -->
        <setting name="cacheEnabled" value="false" />
        <!-- 是否启用懒加载 -->
        <setting name="lazyLoadingEnabled" value="true" />
        <!-- 使用log4j日志 -->
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    
    <typeAliases>
        <!-- 别名有2种设置方式,一种是通过typeAlias一个一个设置, 一种是通过package设置 -->
        <typeAlias alias="userDTO" type="com.user.UserDTO" />
        <typeAlias alias="departmentDTO" type="com.department.DepartmentDTO" />
        <!-- package设置的默认以对象首字母小写注册的,例如user下对象为UserDTO,
                        则配置<package name="com.user"/>注册的别名为userDTO
         -->
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <!-- 事务管理器的类型有2中,分别为JDBC和MANAGED 
            JDBC指直接使用JDBC的提交和回滚功能;MANAGED指不做提交和回滚,一般让容器来管理事务 -->
            <transactionManager type="JDBC" />
            <!-- 数据源的类型配置有三种分别为POOLED UNPOOLED JNDI
             POOLEN:指使用JDBC数据库连接池,这种方式比较常用。
             UNPOOLED:指每次请求时会创建一个数据库连接,用完后销毁数据库连接。
             JNDI:这种是通过使用外部容器(如EJB容器)来配置数据源,
             -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>

    <!-- 配置映射文件 -->
    <mappers>
        <!-- mybatis 映射文件配置有4种,分别为使用mapper路径、使用url引入xml、使用类路径和使用包名 -->
        <!-- 使用mapper路径 -->
        <mapper resource="com/department/dao/DepartmentMapper.xml" />
        <!-- 使用url引入(不常用)
        <mapper url="file:///var/mappers/BlogMapper.xml"/>
         -->
        <!-- 使用类名(此处配置的是接口位置,如果按此种方式配置,则xml和接口必须放在同一目录下)
         -->
         <mapper class="com.user.dao.UserMapper"/>
        <!-- 使用包名
        <package name="com.user.dao"/> -->
    </mappers>
</configuration>

3.2.3 配置log4j.properties,此文件可根据自己需求配置,以下是简单配置:

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

3.3 department包中代码编写(用于sqlSession调用sql)

3.3.1 完善部门DTO对象
    内容是基本属性、get方法、set方法和重写的toString()方法(用于后面测试)。
3.3.2 完善DepartmentMapper.xml
    内容是简单的查询sql,需要注意的是namespace可以随意设置,只要唯一就行,没有通过mapper接口调用sql时设置的那么严格。如下:

<?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="department">
    <select id="findDepartmentByID" parameterType="string" resultType="departmentDTO">
        select depid, parentdepid, depno, depname
        from fw_department
        where depid = #{depID}
    </select>
</mapper>

3.4 user包中代码编写(用于Mapper接口调用sql)

3.4.1 创建用户DTO对象(略)
3.4.2 创建UserMapper接口和UserMapper.xml
注意:
    1、接口中的方法名和UserMapper.xml中select配置的ID必须一致;
    2、接口必须和UserMapper.xml在同一目录下(如果mapper文件是通过class配置的,则此条必须注意,否则可以忽略);
    3、UserMapper.xml中namespace设置的为接口的全路径。
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="com.user.dao.UserMapper">
    <select id="findUserByID" parameterType="string" resultType="userDTO">
        select userid, userno, username
        from fw_user
        where userid = #{userID}
    </select>
</mapper>

4、功能测试

至此必要的代码已经写完了,测试代码如下:

public static void main(String[] args) throws Exception {
	String resource = "resources/mybatis-config.xml";
	InputStream stream = Resources.getResourceAsStream(resource);
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);
	SqlSession sqlSession = sqlSessionFactory.openSession();
	//使用sqlSession执行sql
	testSqlSession(sqlSession);
	//使用mapper接口执行sql
	testMapper(sqlSession);
	sqlSession.close();
}

4.1 通过sqlSession调用sql

public static void testSqlSession(SqlSession sqlSession) {
	DepartmentDTO depDTO = sqlSession.selectOne("department.findDepartmentByID", "001001");
	System.out.println(depDTO.toString());
}

4.2 通过Mapper接口调用sql

public static void testMapper(SqlSession sqlSession) {
	UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
	UserDTO userDTO = userMapper.findUserByID("111");
	System.out.println(userDTO.toString());
}

部分测试结果如下:

DEBUG [main] - Opening JDBC Connection
DEBUG [main] - Created connection 1271041075.
DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@4bc28c33]
DEBUG [main] - ==>  Preparing: select depid, parentdepid, depno, depname from fw_department where depid = ? 
DEBUG [main] - ==> Parameters: 001001(String)
DEBUG [main] - <==      Total: 1
[depID=001001,parentDepID=0,depNO=101,depName=财务部]
DEBUG [main] - ==>  Preparing: select userid, userno, username from fw_user where userid = ? 
DEBUG [main] - ==> Parameters: 111(String)
DEBUG [main] - <==      Total: 1
[userID=111,userNO=19092601,userName=张三]

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单搭建mybatis开发环境 的相关文章

  • opencv 轮廓放大_使用OpenCV和Python构建自己的车辆检测模型

    概述 你对智慧城市领域有兴趣吗 如果是的话 你会喜欢这个关于实现你自己的车辆检测系统的教程 在深入实现部分之前 我们将首先了解如何检测视频中的移动目标 我们将使用OpenCV和Python构建自动车辆检测器 介绍 关于智慧城市的理念 以及自

随机推荐

  • 三分钟了解腾讯云DDOS基础防护

    三分钟了解腾讯云DDOS基础防护 DDoS 基础防护应用场景包括哪些 腾讯云 DDoS 基础防护应用于攻击频率不高且攻击峰值不超过基础防护阈值的 DDoS 攻击防护场景 当攻击流量超过一定流量时 将自动启动 DDoS 清洗设备进行流量清洗
  • nettty

    https www jianshu com p e58674eb4c7a 1 Netty 异步和事件驱动 1 Netty 能够帮助搭建允许系统能够扩展到支持150000名并发用户 2 Netty 设计关键 异步 事件驱动 1 1 Java网
  • Linux下JDK1.8安装及配置

    进入Linux系统Ubuntu debian或centos安装JDK1 8并配置环境变量 通过终端在 opt目录下新建base文件夹 命令行 sudo mkdir opt base 然后进入java目录 命令行 cd opt base 到官
  • Ubuntu安装Nvidia显卡驱动

    原来没那么复杂 https linuxconfig org how to install the nvidia drivers on ubuntu 18 04 bionic beaver linux 我用的第一种方法 安装途中遇到了一个 v
  • php ajax右边悬浮购物车,一个简单的php+Ajax购物车程序代码(1/2)_PHP教程

    cart name name this gt items SESSION this gt cart name setItemQuantity Set the quantity of an item param string order co
  • 远程服务器docker配置并启动jupyter lab

    前提摘要 在远程服务器docker中存在镜像 但想通过jupyter lab来更好的可视化代码结果 首先登录远程服务器ssh 并拉取镜像 p是端口映射 22给ssh连接 jupyter lab的默认端口是8889 8888是自己的端口号 n
  • Ubuntu下OpenResty 搭建高性能服务端

    Socke 介绍 Linux Socket 编程领域为了处理大量连接请求场景 需要使用非阻塞 I O 和复用 select poll epoll 是 Linux API 提供的 I O 复用方式 自从 Linux2 6 中加入了 epoll
  • 函数式,F#都做了哪些优化?

    非函数式语言中使用函数式风格的缺点 函数式的优点 想必大家都已经非常了解了 我们来看看 一般语言使用函数式风格可能带来的问题 变量默认是可变的 为了实现不可变性 开发者只能人为的规范不去改变变量的值 没有明确的变量修改提示 容易因失误改变变
  • 手撸软件测试框架——lua版(四)

    本文简单介绍一下开发测试用例用到的几个关键接口 1 断言 在测试用例中少不了对结果进行校验 校验的方法一般称为断言 assert 也就是说 在进行一系列的操作之后 断定会出现某个确定性的结果 如果这个确定性的结果如期出现 则断言成功 被测试
  • spring读取resources文件夹下的文件报错:cannot be resolved to absolute file path because it dose not reside in th

    spring springboot读取resources文件夹下的文件报错 cannot be resolved to absolute file path because it dose not reside in the file sy
  • k8s之存储、SC、STS、DS篇(一些常见的存储方案)

    为什么要做持久化存储 在k8s中部署的应用都是以pod容器的形式运行的 假如我们部署MySQL Redis等数据库 需要对这些数据库产生的数据做备份 因为Pod是有生命周期的 如果pod不挂载数据卷 那pod被删除或重启后这些数据会随之消失
  • 关于 最新版idea(2021.3.3) 在配置XML文件时候,因为没有加上 .xml变成了文档模式的解决方式

    关于 最新版idea 2021 3 3 在配置XML文件时候 因为没有加上 xml变成了文档模式的解决方式 首先就是关于自己的这个问题 自己到各大论坛上面找了半天 发现更多的都是旧版的 而且上面解决方式根本在新版的idea中根本不能用 最后
  • Hbase分布式集群搭建

    环境准备 hbase软件包 http mirror bit edu cn apache hbase 1 3 1 hbase 1 3 1 bin tar gz 完成hadoop集群环境搭建 安装hbase 首先在hadoop master安装
  • 门函数卷积_卷积及其应用

    卷积公式的由来 卷积公式最开始来自于古典概型 如题 掷两次公平的骰子 点数之和等于8的概率 设随机变量 为第一次掷得的点数 随机变量 为第二次掷得的点数 因此不考虑点数之和等于8的条件 则有 种样本空间 根据条件 相当于给随机变量的取值限定
  • 视觉SLAM十四讲 读书编程笔记 Chapter6 非线性优化

    Chapter6 非线性优化 实践 Ceres 1 安装Ceres依赖库 2 编译安装Ceres 3 曲线拟合问题描述 4 ceres使用方法 5 完整代码 实践 g2o 1 安装g2o依赖库 2 编译安装g2o 3 g2o使用方法 4 完
  • 正确配置并且测试HttpListener的方法(httpcfg的使用)

    在此我列出一些我个人遇到的问题和注意点 具体步骤可以参考后面的参考链接 1 用HttpListener写一个简单的http server 2 使用makecert创建服务器端的认证证书 makecert包含在Windows SDK 中 co
  • 我的世界java版高效率刷怪塔_我的世界超高效率刷怪塔制作教程 砍怪砍到手抽筋...

    刷怪塔能让我们的游戏变的非常的简单 因为无限的经验和物品让我们的游戏变的很爽 今天游戏园小编就为大家分享一个刷怪塔的制作教程 希望大家能够喜欢 做刷怪塔之前先来了解一下游戏刷怪的原理 网上很多人说 刷怪原里是 以玩家为中心 42米以外到72
  • 【多线程】synchronized同步代码块

    一 前言 使用synchronized声明的方法在 某些情况下是有弊端的 比如A线程调用同步的方法执行一个长时间的任务 那么B线程就必须等待比较长的时间才能执行 这种情况可以使用synchronized代码块去优化代码执行时间 也就是通常所
  • 五日均线指标编程案例讲解

    通达信指标编程指南 清泉老师带你一步一步学习通达信指标编程 让你慢慢成为指标编程专家 目录 通达信指标编程指南 文章目录 前言 一 什么是五日均线 二 五日均线编程步骤 1 设定均线参数 2 计算移动平均值 3 测试源代码 总结 前言 随着
  • 简单搭建mybatis开发环境

    目录 前言 1 项目目录结构总览 2 准备工作 2 1 新建测试项目 下载jar包 2 2 创建数据库表 本文使用的mysq数据库 3 环境搭建 3 1 根据目录结构创建对应文件 导包 3 2 配置资源文件 3 3 department包中