一、环境说明、技术栈
1、环境说明
MySQL,maven,IDEA,JDK
2、技术栈
mybatis,maven
二、创建配置项目
准备工作
既然要学习MyBatis,肯定要有一个数据库以及一些数据
CREATE TABLE user (
id INT(10) PRIMARY KEY,
name VARCHAR(100) NOT NULL,
pwd VARCHAR(100) NOT NULL
) ENGINE = INNODB DEFAULT CHARSET = utf8
INSERT INTO user VALUES (1, "张三", "123");
INSERT INTO user VALUES (2, "李四", "456");
INSERT INTO user VALUES (3, "王五", "123456");
如图项目结构
1、创建一个maven空项目
2、删除src
3、导入依赖
在pom.xml中导入依赖
<dependencies>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
上面代码中中的版本号按照自己安装的来
手动导入依赖后,点击右上角可以自动加载配置依赖
为了防止资源导出失败,还需要在pom.xml中配置如下代码:
<!--在build中配置resources,来防止资源导出失败问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
3、创建子模块、
点击项目,右键创建一个Module,然后创建一个新的Maven项目
结构如下图
- java目录:写java的代码
- resourse目录:mybatis的配置文件
- test目录:编写测试代码
4、配置mybatis-config.xml
在resources目录下创建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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="000929"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/lyl/dao/UserMapper.xml"/>
</mappers>
</configuration>
在根据自己的数据库,修改核心配置文件,用于连接数据库
5、创建工具类utils
目录结构如下
package com.lyl.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 sqlSessionFactory;
static {
try {
String source = "mybatis-config.xml";
InputStream inputStream;
inputStream = Resources.getResourceAsStream(source);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
// 获取SqlSession
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
6、创建实体类pojo
package com.lyl.pojo;
public class User {
private int id;
private String name;
private 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 + '\'' +
'}';
}
}
7、创建接口dao
package com.lyl.dao;
import com.lyl.pojo.User;
import java.util.List;
public interface UserMapper {
//查询全部用户
List<UserMapper> getUser();
//添加用户
int addUser(User user);
//修改用户
int updateUser(User user);
//删除用户
int deleteUser(int id);
}
8、创建接口对应的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="com.lyl.dao.UserMapper">
<select id="getUser" resultType="com.lyl.pojo.User">
select * from user
</select>
<insert id="addUser">
insert into user (id, name, pwd) values (#{id},#{name},#{pwd});
</insert>
<update id="updateUser">
update user set name=#{name}, pwd=#{pwd} where id=#{id};
</update>
<delete id="deleteUser">
delete from user where id = #{id};
</delete>
</mapper>
注意配置核心配置文件
在之前创建的mybatis-config.xml中,有一个mappers标签,需要在里面连接到UserMapper.xml文件
<mappers>
<mapper resource="com/lyl/dao/UserMapper.xml"/>
</mappers>
9、测试
创建com.lyl.dao.Mytest
package com.lyl.dao;
import com.lyl.pojo.User;
import com.lyl.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class MyTest {
@Test
public void getUserTest() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<UserMapper> user = mapper.getUser();
System.out.println(user);
sqlSession.close();
}
@Test
public void addUserTest() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int res = userMapper.addUser(new User(4,"小乐","321456"));
System.out.println(res);
// 提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void updateUserTest() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int res = userMapper.updateUser(new User(4, "小虎", "789654"));
System.out.println(res);
sqlSession.commit();
sqlSession.close();
}
@Test
public void deleteUserTest() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.deleteUser(4);
sqlSession.commit();
sqlSession.close();
}
}
运行成功就会出现如下结果
可能遇到的问题
-
UserMapper.xml中不能有中文,有的人在这个文件中写了中文就会乱码,但有的人写了就没有问题,如果报错乱码了,就注意一下
-
数据库时区问题:在MySQL的命令行下输入命令 set global time_zone=’+8:00’;
-
由于我的数据库版本较新所以驱动的链接跟你们的不太一样
com.mysql.cj.jdbc.Driver
老一点的把.cj去掉就好
总结
以上就是使用IDEA搭建一个MyBatis框架的步骤,现在只是一个简简单单的框架,实现了增删改查的功能,后续会不断的进行优化、配置、实现更多的功能。