进入一段时间的学习及温习,已经可以说是初步掌握了Javaweb入门开发,由于我的中心思想是抛弃JSP,做纯粹的前后端分离项目,所以接下来计划学习持久层开发,现在主流的持久层开发工具是mybatis。看了一遍相关教程,理论知识看的似懂非懂。看来还得上手写代码,才能掌握透彻啊。
工程环境说明
本文工程使用的是jdk1.8+tomcat8,及mybatis-3.5.9。数据库是MySQL5.7。编辑器使用的是IDEA2021.3.3
新建项目工程
使用IDEA,新建一个web工程。关于使用新版IDEA怎么新建web工程请访问《如何使用IDEA2020.2新建servlet工程》
在web/WEB-INF目录下新建一个lib目录,并将此目录作为工程的依赖包目录。
具体操作:右击lib目录,选择【Add as Library】即可。
导入依赖包
下载mybatis包,访问【https://github.com/mybatis/mybatis-3】下载对应的mybatis压缩包。
压缩包目录如下图所示

将压缩包中lib目录中的文件及mybatis-3.5.9.jar添加至工程的lib目录。
由于mybatis是需要操作数据库的,所以还需要导入数据库驱动包。本工程使用的是数据库驱动文件是mysql-connector-java-5.1.49.jar。将此包也添加至工程的lib目录。
新建数据库及表
create table t_users
(
id bigint auto_increment,
userId varchar(255) null comment '用户ID,Java代码生成',
userName varchar(255) not null comment '用户名,登录名',
password varchar(255) not null comment '用户密码,mb4加密',
constraint t_user_pk
primary key (id)
)
comment '用户表';
编辑工程文件
在项目工程src目录下新建entity目录【也可命名为pojo】。此目录存放实体类文件。在该目录下新建User类文件。
package entity;
public class User {
private int Id;
private String userId;
private String userName;
private String password;
public int getId() {
return Id;
}
public void setId(int id) {
Id = id;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"Id=" + Id +
", userId='" + userId + '\'' +
", userName='" + userName + '\'' +
", password='" + password + '\'' +
'}';
}
}
在src目录下新建service目录,并在该目录下新建IUser接口类文件。
package service;
import entity.User;
import java.util.List;
public interface IUser {
public List<User> queryUsers();
public User queryUserById(int id);
}
在src目录下新建mappers目录,并在该目录下新建userMapper.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="service.IUser">
<!-- 查询全部用户 -->
<select id="queryUsers" resultType="entity.User">select * from t_users</select>
<select id="queryUserById" resultType="entity.User" parameterType="int">Select * From t_users Where id=#{id}</select>
</mapper>
在src目录下新建config目录,并在该目录下新建db.properties文件
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test_db?useUnicode=true&characterEncoding=utf8
username=root
password=123456
在config目录下新建mybatis-config.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>
<!-- 引入外部配置文件 -->
<properties resource="config/jdbc.properties" />
<!-- 别名 -->
<!-- 别人配置必须写在properties配置之后 -->
<typeAliases>
<typeAlias alias="user" type="entity.User"></typeAlias>
</typeAliases>
<!-- 配置mybatis运行环境 -->
<environments default="development">
<environment id="development">
<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
<transactionManager type="JDBC" />
<!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
<!-- POOLED 表示支持JDBC数据源连接池 -->
<!-- UNPOOLED 表示不支持数据源连接池 -->
<!-- JNDI 表示支持外部数据源连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mappers/userMapper.xml"/>
</mappers>
</configuration>
在src目录下新建util目录,并在该目录下新建SqlSessionFactoryUtil工具类
package 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 SqlSessionFactoryUtil{
private static SqlSessionFactory sqlSessionFactory = null;
private static final Class CLASS_LOCK = SqlSessionFactoryUtil.class;
private SqlSessionFactoryUtil(){}
// 读取配置文件,并初始化SqlSessionFactory【实例化】
public static SqlSessionFactory initSqlSessionFactory(){
String resource = "config/mybatis-config.xml";
InputStream is = null;
try {
is = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
synchronized (CLASS_LOCK) {
if(sqlSessionFactory == null) {
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
}
}
return sqlSessionFactory;
}
// 创建SqlSession(会话)
public static SqlSession openSqlSession(){
if(sqlSessionFactory==null){
initSqlSessionFactory();
}
return sqlSessionFactory.openSession();
}
}
到此,mybatis的开发环境已经算是搭建完成了。
至于如何使用mybatis。可以在src目录下新建一个启动测试类UserTest来测试使用。
import entity.User;
import org.apache.ibatis.session.SqlSession;
import service.IUser;
import util.SqlSessionFactoryUtil;
import java.util.List;
public class UserTest {
public static void main(String[] args) {
SqlSession sqlSession=null;
try {
sqlSession= SqlSessionFactoryUtil.openSqlSession();
IUser iUser=sqlSession.getMapper(IUser.class);
List<User> users=iUser.queryUsers();
if(users.size()>0){
for (User user : users) {
System.out.println(user.toString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/mybatis-dev-environment.html