本文将使用最小化配置及代码来开发一个MyBatis示例,以此来了解我们要开发一个MyBatis项目所需要的最小资源。

开发环境

Eclipse Java EE: Luna Release (4.4.0)

JDK: java v 1.8.x

MyBatis:3.2.8

MySQL:5.6.15

MyBatis 3.2.8 依赖的 jar 包可以在  http://mvnrepository.com/artifact/org.mybatis/mybatis/3.2.8 处发现和下载

导入jar包的说明:

mybatis(必需):mybatis 组件包

junit(可选):用于支持编写单元测试

mysql-connector-java(必选):用于连接目标数据库的jdbc驱动包

commons-loggin, log4j(可选):用于显示mybatis运行时的日志输出

pom.xml 依懒包配置

<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.8</version>
</dependency>
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.35</version>
</dependency>
<dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version>
</dependency>
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>

工程目录结构

本文中所使用的是 Maven 工程项目,也可以使用本地 jar 包导入工程;

User.java 为实体模型类

MybatisFirstTest.java 为单元测试类

mapper/user.xml  为实体mapper映射文件

log4j.properties 为日志输出配置文件

MybatisConfig.xml 为MyBatis的全局配置文件

数据库表结构

CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(32) NOT NULL,`birthday` date DEFAULT NULL,`sex` char(1) DEFAULT NULL,`address` varchar(256) DEFAULT NULL,PRIMARY KEY (`id`)
);

MyBatisConfig.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><environments default="development"><environment id="development"><!-- 配置该工程所使用的事务管理器类型,JDBC 为  JdbcTransactionFactory.class 的别名 --><transactionManager type="JDBC" /><!-- 配置数据源类型, POOLED 为 PooledDataSourceFactory.class 的别名 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/mybatis" /><property name="username" value="root" /><property name="password" value="123456" /></dataSource></environment></environments><mappers><!-- 配置工程所使用的 User 的 Mapper 映射文件路径 --><mapper resource="mapper/user.xml"/></mappers>
</configuration>

为了能输出日志,还需配置 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

User 实体模型类

public class User {public int id;public String username;public Date birthday;public String sex;public String address;
}

User.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="test"><select id="getUserById" parameterType="int" resultType="cn.xleos.mybatisfirst.po.User">SELECT * FROM user WHERE id = #{value}</select>
</mapper>

单元测试代码

package cn.xleos.mybatisfirst.test;import java.io.InputStream;
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 org.junit.Before;
import org.junit.Test;import cn.xleos.mybatisfirst.po.User;public class MybatisFirstTest {private SqlSessionFactory sqlSessionFactory; @Beforepublic void setUp() throws Exception {// 1. 读取  MybatisConfig.xml 自定义命名的全局配置文件.//    getResourceAsStream 使用的资源路径//    getUrlAsStream 使用的是文件路径InputStream inputStream = Resources.getResourceAsStream("MybatisConfig.xml");// 2. 使用sqlSession的工厂构造器来读入全局配置,再生成一个sqlSession工厂.sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}@Testpublic void getUserByIdTest() {// 3. 通过 sqlSession 工厂打开一个 sqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();try {// 4. 使用 selectOne 来调用 user.xml 配置中的(命名空间+statementId) text.getUserById 节的SQL语句//    并传入简单类型参数值  1User user = sqlSession.selectOne("test.getUserById", 1);System.out.println(user);}finally{sqlSession.close();}}
}

以下是单元测试日志输出,可以方便的查看MyBatis所产生的SQL脚本,以及数据库连接的状态;

DEBUG [main] - Opening JDBC Connection
DEBUG [main] - Created connection 660143728.
DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@2758fe70]
DEBUG [main] - ==>  Preparing: SELECT * FROM user WHERE id = ?
DEBUG [main] - ==> Parameters: 1(Integer)
DEBUG [main] - <==      Total: 1
User [id=1, username=王五, birthday=null, sex=2, address=null]
DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@2758fe70]
DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@2758fe70]
DEBUG [main] - Returned connection 660143728 to pool.

转载于:https://www.cnblogs.com/xialiang/p/4565145.html

一. MyBatis系列:第一个MyBatis工程相关推荐

  1. Mybatis系列(三):Mybatis实现关联表查询

    原文链接:http://www.cnblogs.com/xdp-gacl/p/4264440.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 ...

  2. Mybatis系列(四):Mybatis缓存

    一.MyBatis缓存介绍 MyBatis 提供了一级缓存和二级缓存的支持        1. 一级缓存: 默认开启,基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se ...

  3. 【深入浅出MyBatis系列八】SQL自动生成插件

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 深入浅出MyBatis系列 [深入浅出MyBatis系列一]MyBatis入门 [深入浅出MyBatis系列二]配置 ...

  4. 第一个Mybatis程序示例 Mybatis简介(一)

    在JDBC小结中(可以参阅本人JDBC系列文章),介绍到了ORM,其中Mybatis就是一个不错的ORM框架 MyBatis由iBatis演化而来 iBATIS一词来源于"internet& ...

  5. 【深入浅出MyBatis系列十一】缓存源码分析

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 深入浅出MyBatis系列 [深入浅出MyBatis系列一]MyBatis入门 [深入浅出MyBatis系列二]配置 ...

  6. mybatis学习笔记-02-第一个mybatis程序

    该视频为狂神说java视频配套笔记(博主自己手打223,日后做个参考223),b站连接:Mybatis最新完整教程IDEA版[通俗易懂]-02-第一个mybatis程序) 文章目录 2.第一个myba ...

  7. MyBatis的日志工厂 | MyBatis系列(五)

    文章目录 相关文章 前言 一.STDOUT_LOGGING 日志 二.LOG4J 日志 ①.MyBatis中使用 ②.正常项目中业务层使用 ③.log4j.properties配置文件配置详细解释 相 ...

  8. 搭建第一个SpringBoot工程;SpringBoot整合mybatis;SpringBoot整合Redis-cluster集群;SpringBoot整合EhCache;

    写在前头,以下内容主要是为了自己复习之用,如果你有幸看到这篇文章,请不要嫌弃某些地方有所跳跃或省略. 1. 搭建第一个SpringBoot工程 1.1 创建工程 1.2 初始pom.xml文件内容 1 ...

  9. MyBatis系列之--Java 项目(非SpringBoot)集成MyBatis

    MyBatis系列之--Java 项目(非SpringBoot)集成MyBatis 对MyBatis简单介绍 核心接口SqlSessionFactory 实战 1. Maven创建Java项目 2. ...

最新文章

  1. python爬虫代码房-Python爬虫一步步抓取房产信息
  2. 深度学习框架Caffe源码解析
  3. 三菱plc两个16转换32位_三菱FX2NPLC如何将十进制数转换成十六进制-专业自动化论坛-中国工控网论坛...
  4. 单面煎鸡蛋,健康有风险
  5. C语言定义一个头节点,一个关于C语言链表头结点的问题
  6. 华硕z97不识别m2固态_华硕H110T +i3 8100T 组装黑苹果Mac mini安装教程
  7. 首次打开文件简单分析
  8. 计算机一级报名是报ms office 吗,计算机一级考试
  9. FHIR标准和国际基于FHIR的互联互通实践(1):如何定义互联互通?
  10. 8086汇编语言:8086CPU的各个引脚的功能讲解
  11. 自编码器(AE)原理解析
  12. 内连接、左外连接与右外连接的区别及作用介绍
  13. 【H5游戏】-用js实现无聊到令人发指的游戏抽【奥特曼】卡牌,打怪兽啦
  14. linux 代码格式化工具下载,Linux 代码格式化工具 indent
  15. 戴尔R710服务器配置raid阵列(附图文)
  16. Android-smart-image-view加载网络图片
  17. HTML入门笔记12-HTML中备注写法
  18. C# 日期格式化的中的 正斜杠的问题
  19. 独孤思维:互联网赚钱的底层逻辑
  20. 元宇宙资源大全【2022最新】

热门文章

  1. 巧妙解决:access denied (javax.management.MBeanTrust...
  2. udhcp源码详解(五) 之DHCP包--options字段
  3. 记一次被js中的this坑的事情
  4. 为你的电脑系统清除淤塞的垃圾!(不用任何软件,超过优化大师)
  5. LCS2005应用扩展-我的ATiPer
  6. 最佳的七十五个网络分析和安全工具
  7. USACO翻译:USACO 2012 JAN三题(3)
  8. pytest集成Allure Report
  9. 谈谈我熟悉又陌生的cookie
  10. 走在技术前沿的 iOS 架构实现