一 创建工程
1.1 依赖项的配置
使用idea创建一个空的Maven工程,可以按照如下示例创建
/pom.xml
在 <dependencies>
节点下中添加如下依赖项,然后更新Maven依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
<scope>provided</scope>
</dependency>
1.2 测试数据库
本例使用MySQL80作为数据库,请在你的数据库使用如下SQL语句创建数据库和数据表
create database d_mybatislearn;
use d_mybatislearn;
create table t_users(
uid int primary key auto_increment,
uname varchar(20) not null,
uage int not null,
usex int not null
);
insert into t_users
(uid,uname,uage,usex)
values
(10001,"张三",19,1),
(10002,"李四",25,1),
(10003,"王美",21,0),
(10004,"张梅",19,0);
1.2 配置文件
Mybatis核心配置文件
src/main/resources/mybatis-config.xml
<configuration>
<!-- 引入外部配置文件-->
<properties resource="db.dev.properties"/>
<!-- 默认环境为dev-->
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
</environments>
</configuration>
数据源配置文件
src/main/resources/db.properies
# mysql驱动,版本>=80添加cj
mysql.driver=com.mysql.cj.jdbc.Driver
# 数据库连接地址,
mysql.url=jdbc:mysql://localhost:3306/d_mybiteslearnserverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
# 数据库用户名
mysql.username=root
# 数据库密码
mysql.password=root
1.3 相关代码
DAO类
src/main/java/site/icefox/javaeelearn/Dao/UsersDao.java
package site.icefox.javaeelearn.Dao;
import org.apache.ibatis.session.SqlSession;
import site.icefox.javaeelearn.Entity.UsersEntity;
import site.icefox.javaeelearn.Mapper.UsersMapper;
import site.icefox.javaeelearn.Util.DBConn;
import java.util.List;
import java.util.logging.Logger;
public class UsersDao {
static Logger logger = Logger.getLogger(UsersDao.class.getName());
public static UsersEntity getUsersByUid(int uid) {
UsersEntity result = null;
try (SqlSession sqlSession = DBConn.getSqlSession()) {
UsersMapper usersmapper = sqlSession.getMapper(UsersMapper.class);
result = usersmapper.getUserByUid(uid);
} catch (Exception e) {
logger.severe(e.getMessage());
}
return result;
}
public static List<UsersEntity> getAllUsers() {
List<UsersEntity> result = null;
try (SqlSession sqlSession = DBConn.getSqlSession()) {
UsersMapper usersmapper = sqlSession.getMapper(UsersMapper.class);
result = usersmapper.getUsers();
} catch (Exception e) {
logger.severe(e.getMessage());
}
return result;
}
}
实体类
src/main/java/site/icefox/javaeelearn/Entity/UsersEntity.java
package site.icefox.javaeelearn.Entity;
import lombok.Data;
// Lombok 是一个 Java 库,它通过使用注解来帮助消除 Java boilerplate 代码。
// 你可以在实体类上使用@Data注解,就不需要自己写getter 、 setter 以及 toString 方法了
@Data
public class UsersEntity {
private Integer uid;
private String uname;
private Integer uage;
private Integer usex;
// getter 、 setter 以及 toString 方法
// 如果不使用@Data注解,请取消注释下面的代码
// public Integer uid() {
// return uid;
// }
//
// public void setUid(Integer uid) {
// this.uid = uid;
// }
//
// public String uname() {
// return uname;
// }
//
// public void setUname(String uname) {
// this.uname = uname;
// }
//
// public Integer uage() {
// return uage;
// }
//
// public void setUage(Integer uage) {
// this.uage = uage;
// }
//
// public Integer usex() {
// return usex;
// }
//
// public void setUsex(Integer usex) {
// this.usex = usex;
// }
//
// @Override
// public String toString() {
// return "UsersEntity{" +
// "uid=" + uid +
// ", uname='" + uname + '\'' +
// ", uage=" + uage +
// ", usex=" + usex +
// '}';
// }
}
Mapper接口
src/main/java/site/icefox/javaeelearn/Mapper/UsersMapper.java
package site.icefox.javaeelearn.Mapper;
import site.icefox.javaeelearn.Entity.UsersEntity;
import java.util.List;
public interface UsersMapper {
UsersEntity getUserByUid(int uid);
List<UsersEntity> getUsers();
}
数据连接池工具类
src/main/java/site/icefox/javaeelearn/Util/DBConn.java
package site.icefox.javaeelearn.Util;
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 DBConn {
private static SqlSessionFactory sqlSessionFactory;
//使用mybatis第一步,获取sqlSessionFactory对象
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
二 测试
测试类
src/test/java/FirstProjectTest.java
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import site.icefox.javaeelearn.Dao.UsersDao;
import site.icefox.javaeelearn.Entity.UsersEntity;
import site.icefox.javaeelearn.Mapper.UsersMapper;
import site.icefox.javaeelearn.Util.DBConn;
public class FirstProjectTest {
@Test
public void queryOneUserByUidTest() {
System.out.println(UsersDao.getUsersByUid(10001));
}
@Test
public void queryUserListTest() {
System.out.println(UsersDao.getAllUsers());
}
}
测试结果
理应如下
三 结语
此工程仅用来展示Mybites的工作流程,详细内容稍后介绍。