一. MyBatis系列:第一个MyBatis工程
本文将使用最小化配置及代码来开发一个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工程相关推荐
- Mybatis系列(三):Mybatis实现关联表查询
原文链接:http://www.cnblogs.com/xdp-gacl/p/4264440.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 ...
- Mybatis系列(四):Mybatis缓存
一.MyBatis缓存介绍 MyBatis 提供了一级缓存和二级缓存的支持 1. 一级缓存: 默认开启,基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se ...
- 【深入浅出MyBatis系列八】SQL自动生成插件
为什么80%的码农都做不了架构师?>>> #0 系列目录# 深入浅出MyBatis系列 [深入浅出MyBatis系列一]MyBatis入门 [深入浅出MyBatis系列二]配置 ...
- 第一个Mybatis程序示例 Mybatis简介(一)
在JDBC小结中(可以参阅本人JDBC系列文章),介绍到了ORM,其中Mybatis就是一个不错的ORM框架 MyBatis由iBatis演化而来 iBATIS一词来源于"internet& ...
- 【深入浅出MyBatis系列十一】缓存源码分析
为什么80%的码农都做不了架构师?>>> #0 系列目录# 深入浅出MyBatis系列 [深入浅出MyBatis系列一]MyBatis入门 [深入浅出MyBatis系列二]配置 ...
- mybatis学习笔记-02-第一个mybatis程序
该视频为狂神说java视频配套笔记(博主自己手打223,日后做个参考223),b站连接:Mybatis最新完整教程IDEA版[通俗易懂]-02-第一个mybatis程序) 文章目录 2.第一个myba ...
- MyBatis的日志工厂 | MyBatis系列(五)
文章目录 相关文章 前言 一.STDOUT_LOGGING 日志 二.LOG4J 日志 ①.MyBatis中使用 ②.正常项目中业务层使用 ③.log4j.properties配置文件配置详细解释 相 ...
- 搭建第一个SpringBoot工程;SpringBoot整合mybatis;SpringBoot整合Redis-cluster集群;SpringBoot整合EhCache;
写在前头,以下内容主要是为了自己复习之用,如果你有幸看到这篇文章,请不要嫌弃某些地方有所跳跃或省略. 1. 搭建第一个SpringBoot工程 1.1 创建工程 1.2 初始pom.xml文件内容 1 ...
- MyBatis系列之--Java 项目(非SpringBoot)集成MyBatis
MyBatis系列之--Java 项目(非SpringBoot)集成MyBatis 对MyBatis简单介绍 核心接口SqlSessionFactory 实战 1. Maven创建Java项目 2. ...
最新文章
- python爬虫代码房-Python爬虫一步步抓取房产信息
- 深度学习框架Caffe源码解析
- 三菱plc两个16转换32位_三菱FX2NPLC如何将十进制数转换成十六进制-专业自动化论坛-中国工控网论坛...
- 单面煎鸡蛋,健康有风险
- C语言定义一个头节点,一个关于C语言链表头结点的问题
- 华硕z97不识别m2固态_华硕H110T +i3 8100T 组装黑苹果Mac mini安装教程
- 首次打开文件简单分析
- 计算机一级报名是报ms office 吗,计算机一级考试
- FHIR标准和国际基于FHIR的互联互通实践(1):如何定义互联互通?
- 8086汇编语言:8086CPU的各个引脚的功能讲解
- 自编码器(AE)原理解析
- 内连接、左外连接与右外连接的区别及作用介绍
- 【H5游戏】-用js实现无聊到令人发指的游戏抽【奥特曼】卡牌,打怪兽啦
- linux 代码格式化工具下载,Linux 代码格式化工具 indent
- 戴尔R710服务器配置raid阵列(附图文)
- Android-smart-image-view加载网络图片
- HTML入门笔记12-HTML中备注写法
- C# 日期格式化的中的 正斜杠的问题
- 独孤思维:互联网赚钱的底层逻辑
- 元宇宙资源大全【2022最新】