一、简述

  本文以笔记的形式,记录一个基本Mybatis项目的使用,方便后期项目使用到相关配置时直接复制使用。

二、项目结构

  

  pom.xml中的依赖

  

  1. <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
  2. <dependency>
  3. <groupId>org.mybatis</groupId>
  4. <artifactId>mybatis</artifactId>
  5. <version>3.5.0</version>
  6. </dependency>
  7. <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
  8. <dependency>
  9. <groupId>mysql</groupId>
  10. <artifactId>mysql-connector-java</artifactId>
  11. <version>8.0.15</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>junit</groupId>
  15. <artifactId>junit</artifactId>
  16. <version>4.12</version>
  17. <scope>test</scope>
  18. </dependency>

三、文件信息

  1、mybatis-config.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <!--配置 -->
  6. <configuration>
  7. <!--配置环境 -->
  8. <environments default="development">
  9. <environment id="development">
  10. <!--事务管理 -->
  11. <transactionManager type="JDBC"/>
  12. <!--数据源 通过Properties加载配置 -->
  13. <dataSource type="POOLED">
  14. <!--驱动driver -->
  15. <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
  16. <!--连接URL -->
  17. <property name="url" value="jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&amp;useUnicode=true&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;allowMultiQueries=true"/>
  18. <!--用户名 -->
  19. <property name="username" value="root"/>
  20. <!--密码 -->
  21. <property name="password" value="123456"/>
  22. </dataSource>
  23. </environment>
  24. </environments>
  25. <!--建立映射 -->
  26. <mappers>
  27. <mapper resource="mappers/InitMapper.xml"/>
  28. <mapper resource="mappers/ConfigureMapper.xml"/>
  29. </mappers>
  30. </configuration>

  注意,(1)、连接URL位于xml中时,原来的"&"需要使用"&amp;"来转义。(2)、如果想最终执行时一个Mapper文件的每一个update/insert/select等Statement中支持多个sql语句的话,需要在连接URL中加入‘allowMultiQueries=true’,切记!

  2、InitMapper.xml和InitMapper.java

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.test.repository.mappers.InitMapper">
  6. <update id="ensureStationGroupTab">
  7. CREATE TABLE IF NOT EXISTS `station_group_tab`(
  8. `id` BIGINT NOT NULL AUTO_INCREMENT,
  9. `name` VARCHAR(255) COMMENT '组名称',
  10. `notes` VARCHAR(255) COMMENT '备注',
  11. PRIMARY KEY (`Id`),
  12. INDEX `idx_station_group_groupName`(`groupName`)
  13. )ENGINE INNODB;
  14. </update>
  15. <update id="ensureConfigureTab">
  16. CREATE TABLE IF NOT EXISTS `configure_tab`(
  17. `id` BIGINT NOT NULL AUTO_INCREMENT,
  18. `stationGroupId` BIGINT COMMENT '站点组ID',
  19. `type` INT COMMENT '模块',
  20. `name` VARCHAR(255) COMMENT '名称',
  21. PRIMARY KEY (`Id`),
  22. INDEX `idx_configure_stationGroupId`(`stationGroupId`),
  23. CONSTRAINT `fk_configure_stationGroupId` FOREIGN KEY (`stationGroupId`) REFERENCES `station_group_tab`(`id`)
  24. )ENGINE INNODB;
  25. </update>
  26. <update id="ensureStationGroupRelationTab">
  27. CREATE TABLE IF NOT EXISTS `station_group_relation_tab`(
  28. `id` BIGINT NOT NULL AUTO_INCREMENT,
  29. `stationGroupId` BIGINT COMMENT '站点组ID' ,
  30. `otherInfo` VARCHAR(255) COMMENT '其它信息',
  31. PRIMARY KEY (`Id`),
  32. INDEX `idx_station_group_relation_stationGroupId`(`stationGroupId`),
  33. CONSTRAINT `fk_station_group_relation_stationGroupId` FOREIGN KEY (`stationGroupId`) REFERENCES `station_group_tab`(`id`)
  34. )ENGINE INNODB;
  35. </update>
  36.  
  37. <update id="initDataTable">
  38. -- INSERT INTO `station_group_tab` (name,notes) VALUES('ABC','ABC');
  39. -- INSERT INTO `station_group_tab` (name,notes) VALUES('DEF','DEF');
  40. </update>
  41. </mapper>
  1. package com.test.repository.mappers;
  2.  
  3. public interface InitMapper {
  4. int ensureStationGroupTab();
  5. int ensureConfigureTab();
  6. int ensureStationGroupRelationTab();
  7. int initDataTable();
  8. }

  3、SqlSessionFactoryUtil工具类

  1. package com.test.repository.utils;
  2.  
  3. import org.apache.ibatis.io.Resources;
  4. import org.apache.ibatis.session.SqlSession;
  5. import org.apache.ibatis.session.SqlSessionFactory;
  6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  7.  
  8. import java.io.IOException;
  9. import java.io.Reader;
  10.  
  11. public class SqlSessionFactoryUtil {
  12. private static SqlSessionFactory sqlSessionFactory;
  13.  
  14. static {
  15. try {
  16. // 1.加载配置文件
  17. Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
  18. // 2.创建SqlSessionFactory
  19. SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
  20. sqlSessionFactory = sqlSessionFactoryBuilder.build(reader);
  21. } catch (IOException e) {
  22. throw new RuntimeException(e);
  23. }
  24. }
  25.  
  26. public static SqlSessionFactory getSqlSessionFactory() {
  27. return sqlSessionFactory;
  28. }
  29.  
  30. public static SqlSession getSqlSession(boolean autoCommit) {
  31. return sqlSessionFactory.openSession(autoCommit);
  32. }
  33.  
  34. }

  4、InitMapperService服务类

  1. package com.test.repository.services;
  2.  
  3. import org.apache.ibatis.session.SqlSession;
  4. import org.slf4j.Logger;
  5. import com.test.repository.mappers.InitMapper;
  6. import com.test.repository.utils.SqlSessionFactoryUtil;
  7.  
  8. public class InitMapperService {
  9. private final Logger log =
  10. LoggerFactory.getLogger(InitMapperService.class);
  11.  
  12. /** 建表语句 */
  13. public void createDataTable() {
  14. try {
  15. SqlSession session = SqlSessionFactoryUtil.getSqlSession(true);
  16. InitMapper mapper = session.getMapper(InitMapper.class);
  17. mapper.ensureStationGroupTab();
  18. mapper.ensureConfigureTab();
  19. mapper.ensureStationGroupRelationTab();
  20. session.close();
  21. } catch (Exception ex) {
  22. log.error("An error occurred while creating the data table.", ex);
  23. }
  24. }
  25.  
  26. /** 初始化数据 */
  27. public void initDataTable() {
  28. try {
  29. SqlSession session = SqlSessionFactoryUtil.getSqlSession(true);
  30. InitMapper mapper = session.getMapper(InitMapper.class);
  31. mapper.initDataTable();
  32. session.close();
  33. } catch (Exception ex) {
  34. log.error("An error occurred while creating the data table.", ex);
  35. }
  36. }
  37.  
  38. public void initData() {
  39. createDataTable();
  40. initDataTable();
  41. }
  42. }

  5、MapperTest.java

  1. @Test
  2. public void testInitData()
  3. {
  4. InitMapperService initMapperService=new InitMapperService();
  5. initMapperService.initData();
  6. }

MyBatis项目快速搭建及MySQL一个Statement支持多条命令参数的更多相关文章

  1. 新巴巴运动网上商城 项目 快速搭建 教程 The new babar sports online mall project quickly builds a tutorial

    新巴巴运动网上商城 项目 快速搭建 教程 The new babar sports online mall project quickly builds a tutorial 作者:韩梦飞沙 Auth ...

  2. 如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目

    目录 前言 项目目录 搭建项目 1. docker安装启动mysql以及redis 1.1 安装mysql 1.2 安装redis 2. 初始化数据库 3.创建项目 4.初始化代码 4.1 全局配置文 ...

  3. USBWebServer 中文便携版 快速搭建 PHP/MySQL 网站服务器环境

    如果你是一位 WEB 开发者,或正在学习网页编程,你一定会发现,每到一台新电脑上想要在本地调试测试/运行网站代码都得搭建配置一遍 WAMP (Win.Apache.PHP.MySQL) 环境简直烦透了 ...

  4. springboot项目快速搭建

    1. 问题描述 springboot的面世,成为Java开发者的一大福音,大大提升了开发的效率,其实springboot只是在maven的基础上,对已有的maven gav进行了封装而已,今天用最简单 ...

  5. ssm项目快速搭建(注解)-依赖

    父层jar包版本控制,管理配置 <!-- 集中定义依赖版本号 -->    <properties>        <junit.version>4.12</ ...

  6. 批量给文件加一个后缀 .bak , 一条命令去掉文件的后缀 linux

    给当前文件夹下面的所有文件加上一个后缀 == 一条命令解决 ll | awk '{print $9}' | grep -v '^[ ]*$' |sed -r 's#(.*)#mv \1 \1.bak# ...

  7. maven项目快速搭建SSM框架(一)创建maven项目,SSM框架整合,Spring+Springmvc+Mybatis

    首先了解服务器开发的三层架构,分配相应的任务,这样就能明确目标,根据相应的需求去编写相应的操作. 服务器开发,大致分为三层,分别是: 表现层 业务层 持久层 我们用到的框架分别是Spring+Spri ...

  8. springboot + shiro + mysql + mybatis 工程快速搭建

    1. 新建 springboot 工程 2. 随便起个名字 3. 初始化工程 4. 导入 shiro 和 thymeleaf 依赖 <!-- thymeleaf依赖 --> <dep ...

  9. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

随机推荐

  1. context-param和init-param的区别

    http://www.cnblogs.com/hzj-/articles/1689836.html

  2. 如何将.SQL文件的数据导入到Mysql的数据库中

    一.用cmd的调试环境导入.sql文件中的数据: WinR键打开cmd输入: MySQL -u root -p 进入MySQL后MySQL>use DR;   MySQL> source  ...

  3. html-div+span-4

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 在controller中将timestamp类型的数据通过toString()方法变成字符串

    然后在miniui里面将dateFormat="yyyy-MM-dd",变成想要的格式.

  5. win10下正确使用Sublime Text搭建python调试环境

      pycharmt等IDE虽然用着爽,但毕竟在速度.资源上还是比较让人不爽的. 使用IDE无非是图个方便省事,特别是像我这种有些记性差的来说. IDE说起来方便于的几个地方就是: 1.语法颜色高亮 ...

  6. 错误 在类中找不到main方法请将main方法定义为 public static void main String args否则JavaFX应用程序类必须扩展javafx-ap

    最近在使用eclipse编写java程序时遇到这样一个问题: 错误在类中找不到main方法,请将main方法定义为 public static void main(String[] args)否则 J ...

  7. SpringMVC(十二) RequestMapping使用POJO作为参数

    将一个普通的JAVA类对象作为一个参数传入. POJO类Address: package com.tiekui.springmvc.pojo; public class Address { priva ...

  8. BZOJ.1095.[ZJOI2007]捉迷藏(线段树 括号序列)

    BZOJ 洛谷 对树DFS得到括号序列.比如这样一个括号序列:[A[B[E][F[H][I]]][C][D[G]]]. 那比如\(D,E\)间的最短距离,就是将\(D,E\)间的括号序列取出:][[] ...

  9. BZOJ.4910.[SDOI2017]苹果树(树形依赖背包 DP 单调队列)

    BZOJ 洛谷 \(shadowice\)已经把他的思路说的很清楚了,可以先看一下会更好理解? 这篇主要是对\(Claris\)题解的简单说明.与\(shadowice\)的做法还是有差异的(比如并没 ...

  10. DFS 算法总结

    DFS 算法总结 这篇文章会对DFS进行一个总结,列举的题目则是从LeetCode上面选的: 适用场景: 有三个方面,分别是输入数据.状态转换图.求解目标: 输入数据:如果是递归数据结构,如单链表,二 ...