Mybatis 项目搭建
一个简单的 Mybatis 项目,实现了增删改查功能,具体步骤如下
1. 导入依赖
pom.xml
org.apache.maven.plugins
maven-compiler-plugin
7
7
mysql
mysql-connector-java
8.0.15
org.mybatis
mybatis
3.5.2
junit
junit
4.12
test
org.projectlombok
lombok
1.18.10
provided
2. 配置db.properties
src/main/resources/db.properties
数据库使用的是 mysql 8.0
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatisuseSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
username=root
password=123456
3. 创建工具类MybatisUtils
src/main/java/com/utils/MybatisUtils.java
该工具类的主要作用是,通过读取配置文件mybatis-config.xml返回SqlSessionFactory
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
4. 创建业务相关类
4.1 POJO
src/main/java/com/pojo/Blog.java
@Data
@AllArgsConstructor
public class Blog {
private String id;
private String title;
private String author;
private Date createdAt;
private int views;
}
这里使用了lombok快速创建了Blog的 setter, getter, constructor 等方法
4.2 Mapper
src/main/java/com/mapper/BlogMapper.java
基础的 CRUD 接口
public interface BlogMapper {
int insertBlog(Blog blog);
int deleteBlog(String id);
int updateBlog(Blog blog);
int updateBlogByMap(Map map);
Blog queryBlogByID(String id);
List queryAllBlog();
// 模糊查询
List searchBlogByTitleKey(String key);
}
5. 配置mybatis-config.xml
src/main/resources/mybatis-config.xml
/p>
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
6. 配置BlogMapper.xml
src/main/resources/com/mapper/BlogMapper.xml
Mapper.xml配置文件最好是创建在resources文件夹中与Mapper.java同包名的文件夹中,这样在部署运行时,配置文件和类文件会在同一文件夹下
/p>
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
insert into mybatis.blog(id, title, author, created_at, views)
value (#{id}, #{title}, #{author}, #{createdAt}, #{views});
delete
from mybatis.blog
where id = #{id};
update mybatis.blog
set title = #{title},
author = #{author},
views = #{views}
where id = #{id};
update mybatis.blog
title = #{title},
author = #{author},
views = #{views},
where id = #{bid};
select *
from mybatis.blog
where id = #{id};
select *
from mybatis.blog;
select *
from mybatis.blog
where title like concat('%', #{key}, '%');
7. 测试
7.1 插入数据
public void insertBlog() {
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
int i = mapper.insertBlog(new Blog("a", "test", "jwy", new Date(), 0));
if (i == 1) {
System.out.println("成功");
}
sqlSession.commit();
}
}
7.2 删除数据
public void deleteBlog() {
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
int i = mapper.deleteBlog("a");
if (i == 1) {
System.out.println("成功");
}
sqlSession.commit();
}
}
7.3 更新数据(全部更新)
public void updateBlog() {
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
int i = mapper.updateBlog(new Blog("5d47f00c86974c4db607a582706421a3", "修改了", "jwy", new Date(), 0));
if (i == 1) {
System.out.println("成功");
}
sqlSession.commit();
}
}
7.4 更新数据(按需更新)
public void updateBlogByMap() {
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
Map map = new HashMap<>();
map.put("bid", "00d42657c6b54b12b1315d9d29ef4d76");
map.put("views", 0);
int i = mapper.updateBlogByMap(map);
if (i == 1) {
System.out.println("成功");
}
sqlSession.commit();
}
}
7.5 查询数据(通过 ID)
public void queryBlogByID() {
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
Blog blog = mapper.queryBlogByID("00d42657c6b54b12b1315d9d29ef4d76");
System.out.println(blog);
}
}
7.6 查询所有数据
public void queryAllBlog() {
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
List blogs = mapper.queryAllBlog();
for (Blog blog : blogs) {
System.out.println(blog);
}
}
}
7.7 模糊查找
public void searchBlogByTitleKey() {
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
List blogs = mapper.searchBlogByTitleKey("a");
for (Blog blog : blogs) {
System.out.println(blog);
}
}
}