在编程开发中,一般提起maven、mybatis这些,我们首先想到的就是javaweb的技术栈,比如spring、springboot。但是今天给大家介绍一个用maven整合mybatis的非web项目完成数据库CRUD。
直接新建即可,创建好后的项目结构如下
在pom文件添加依赖
mysql
mysql-connector-java
8.0.21
org.mybatis
mybatis
3.5.5
org.junit.jupiter
junit-jupiter-api
5.7.0
test
同时为了防止打包后找不到静态资源,在pom文件中,添加build标签
src/main/resources
**/*.properties
**/*.xml
true
src/main/java
**/*.properties
**/*.xml
true
首先创建数据库
create DATABASE mybatis;
USE mybatis;
create table user(
id int PRIMARY key not null,
name VARCHAR(30) ,
pwd VARCHAR(30)
) ENGINE=INNODB;
INSERT INTO `user`(`id`, `name`, `pwd`) VALUES (1, '卡卡罗特', '123456');
INSERT INTO `user`(`id`, `name`, `pwd`) VALUES (2, '阿笠博士', '12345');
INSERT INTO `user`(`id`, `name`, `pwd`) VALUES (3, '野原向日葵', '123');
INSERT INTO `user`(`id`, `name`, `pwd`) VALUES (4, '一拳超人', '12');
INSERT INTO `user`(`id`, `name`, `pwd`) VALUES (5, '库里林', '123321');
再创建包,在包下创建实体类,我这里创建了一个User类。
package toutiao.pojo;
public class User {
int id;
String name; String pwd; public User() {
} public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}}
在这里设置数据库连接属性等。同时数据库连接动态配置等可以在application.properties文件中配置,在mybatis-config.xml中加载。
在这个类中读取 mybatis-config.xml 创建 sqlSession。
package learn.utils;
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 java.io.IOException;
import java.io.InputStream;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactor;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactor = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace(); } } public static SqlSession getSqlSession(){
return sqlSessionFactor.openSession();
}}
此时,项目的目录结构如下
package toutiao.mapper;
import toutiao.pojo.User;
import java.util.List;
public interface UserMapper {
public List getUserList();
}
文件里面的sql语句的id对应接口文件的方法名(这里以查询为例)
因为是在resources中,所以mapper标签的resource路径直接就是从resources下面的文件夹开始
在test包里面创建测试类
package learn.mapper;
import learn.pojo.User;
import learn.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.jupiter.api.Test;
import java.util.List;
public class UserMapperTest {
@Test
public void test(){
Sqlession sqlSession = MybatisUtils.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List userList = userMapper.getUserList(); for(User user : userList){
System.out.println(user); } sqlSession.close(); }}