一、简介
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
二、入门使用
1、添加依赖
a、使用maven管理依赖,以我本次使用的版本为例


junit
junit
4.12
test
org.mybatis
mybatis
3.2.3
mysql
mysql-connector-java
5.1.38
View Code
b、也可以使用gradle管理依赖


dependencies {
testCompile group:'junit', name: 'junit', version: '4.12'compile'org.mybatis:mybatis:3.2.3'compile'mysql:mysql-connector-java:5.1.38'}
View Code
c、也可以去官网下载,官网地址:http://www.mybatis.org/mybatis-3/
2、初始化数据库和初始数据,以数据库moy_mybatis和表t_test为例


## 创建数据库
CREATE DATABASE moy_mybatis;
## 创建一个测试表
CREATE TABLE t_test(
id INT(11) AUTO_INCREMENT,
create_time DATE COMMENT'创建时间',
modify_time DATE COMMENT'修改时间',
content VARCHAR (50) COMMENT '内容',
PRIMARY KEY (id)
);
View Code
3、新建实体类TestEntity


packagecom.moy.mybatis3.entity;importjava.util.Date;/*** [Project]:moy-gradle-project
* [Email]:moy25@foxmail.com
* [Date]:2018/2/20
* [Description]:
*
*@authorYeXiangYang*/
public classTestEntity {privateInteger id;privateDate createTime;privateDate modifyTime;privateString content;publicInteger getId() {returnid;
}public voidsetId(Integer id) {this.id =id;
}publicDate getCreateTime() {returncreateTime;
}public voidsetCreateTime(Date createTime) {this.createTime =createTime;
}publicDate getModifyTime() {returnmodifyTime;
}public voidsetModifyTime(Date modifyTime) {this.modifyTime =modifyTime;
}publicString getContent() {returncontent;
}public voidsetContent(String content) {this.content =content;
}
@OverridepublicString toString() {return "TestEntity{" +
"id=" + id +
", createTime=" + createTime +
", modifyTime=" + modifyTime +
", content='" + content + '\'' +
'}';
}
}
View Code
4、新建接口TestMapper


packagecom.moy.mybatis3.mapper;importcom.moy.mybatis3.entity.TestEntity;importjava.io.Serializable;importjava.util.List;/*** [Project]:moy-gradle-project
* [Email]:moy25@foxmail.com
* [Date]:2018/2/20
* [Description]:
*
*@authorYeXiangYang*/
public interfaceTestMapper {
Listlist();
TestEntity get(Serializable id);intinsert(TestEntity TestEntity);intupdate(TestEntity TestEntity);intdelete(Serializable id);intcount();
}
View Code
5、新建实体映射文件Test.xml,这里的namespace就是写TestMapper全类名,否则不能使用动态代理的方式调用接口TestMapper


/p>
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
SELECT*FROM t_test
SELECT count(*) FROM t_test
SELECT id,create_time as createTime,modify_time as modifyTime ,content
FROM t_test WHERE id=#{id}
INSERT INTO t_test (create_time,modify_time,content)
VALUES (#{createTime},#{modifyTime},#{content})
UPDATE t_test SET modify_time=#{modifyTime},content=#{content}
WHERE id=#{id}
DELETE FROM t_test WHERE id=#{id}
View Code
6、新建mybatis配置信息文件mybatis-config.xml


/p>
PUBLIC"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
View Code
7、为了方便测试,编写一个获取SqlSession的工具类Mybatis3Utils


packagecom.moy.mybatis3.utils;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importjava.io.IOException;importjava.io.Reader;importjava.util.Objects;/*** [Project]:moy-gradle-project
* [Email]:moy25@foxmail.com
* [Date]:2018/2/19
* [Description]:
*
*@authorYeXiangYang*/
public abstract classMybatis3Utils {public static finalSqlSessionFactory sqlSessionFactory;public static final ThreadLocal sessionThread = new ThreadLocal<>();static{try{
Reader reader= Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory= newSqlSessionFactoryBuilder().build(reader);
}catch(IOException e) {throw newRuntimeException(e);
}
}public staticSqlSession getCurrentSqlSession() {
SqlSession sqlSession=sessionThread.get();if(Objects.isNull(sqlSession)) {
sqlSession=sqlSessionFactory.openSession();
sessionThread.set(sqlSession);
}returnsqlSession;
}public static voidcloseCurrentSession() {
SqlSession sqlSession=sessionThread.get();if(Objects.nonNull(sqlSession)) {
sqlSession.close();
}
sessionThread.set(null);
}
}
View Code
8、新建测试类TestMapperTest测试


packagecom.moy.mybatis3.mapper;importcom.moy.mybatis3.entity.TestEntity;importcom.moy.mybatis3.utils.Mybatis3Utils;importorg.apache.ibatis.session.SqlSession;importorg.junit.After;importorg.junit.Before;importorg.junit.Test;importjava.util.Arrays;importjava.util.Date;importjava.util.List;import static org.junit.Assert.*;/*** [Project]:moy-gradle-project
* [Email]:moy25@foxmail.com
* [Date]:2018/2/20
* [Description]:
*
*@authorYeXiangYang*/
public classTestMapperTest {
SqlSession sqlSession;
TestMapper testMapper;
@Beforepublic voidbefore() {
sqlSession=Mybatis3Utils.getCurrentSqlSession();
testMapper= sqlSession.getMapper(TestMapper.class);
}
@Afterpublic voidafter() {
Mybatis3Utils.closeCurrentSession();
}
@Testpublic voidinsert() {
TestEntity entity= newTestEntity();
entity.setCreateTime(newDate());
entity.setModifyTime(newDate());
entity.setContent("我是内容");
System.out.println(testMapper.insert(entity));
sqlSession.commit();
}
@Testpublic voidcount() {
System.out.println(testMapper.count());
}
@Testpublic voidlist() {
List list =testMapper.list();
System.out.println(Arrays.toString(list.toArray()));
}
@Testpublic voidget() {
System.out.println(testMapper.get(1));
}
@Testpublic voidupdate() {
TestEntity entity= newTestEntity();
entity.setId(1);
entity.setModifyTime(newDate());
entity.setContent("我是修改后内容");
testMapper.update(entity);
sqlSession.commit();
}
@Testpublic voiddelete() {
testMapper.delete(1);
sqlSession.commit();
}
}
View Code
yexiangyang
moyyexy@gmail.com
本文介绍了MyBatis框架与MySQL数据库的入门使用方法,包括添加依赖、初始化数据库、创建实体类、接口、映射文件及配置信息,还提供了一个测试类进行操作演示。
300

被折叠的 条评论
为什么被折叠?



