Mybatis 环境搭建
很多新人在一开始学习mybatis 的时候虽然看懂开发者文档不是什么难事,但是在搭建环境的时候就总会出现一些莫名其妙的错误信息,比如说我自己。所以我现在整理了一下步骤,做一个记录,也提供给一些初学者做一个参考,我使用的是IDEA开发工具。
1. 新建Maven项目
然后:
然后点击 finish 就好了:
新建的项目工程结构如图;
2. 配置文件
-
项目已经创建成功,既然是 Mybatis 项目,那么久需要引入Mybatis的依赖:
下载Mybatis 的依赖,并引入;
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
</dependencies>
效果如下:
Mybatis 是持久层,所以需要mysql的驱动 依赖
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
-
依赖引入之后,接下来就是要进行配置了:
这里参考Mybatis 官方文档的 配置文件格式:
在 resource 目录下新建一个 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="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
</mappers>
</configuration>
-
修改 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=UFT-8"/>
<property name="username" value="xxxx"/>
<property name="password" value="xxxxxx"/>
<!-- 这里记得改成自己数据库对应的参数-->
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
</mappers>
</configuration>
3. 建立table 映射的实体
即创建一个实体类:
这个实体类的字段都是跟数据库中表的字段保持一致的:
package cn.kingshion.entity;
public class Users {
int id;
String name;
String password;
public Users() {
}
public Users(int id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
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 getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Users{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
4. 建立接口,设计可操作的方法
在这里先创建一个接口类,然后定义一个数据库查询的方法:(当然接口里面的都是抽象方法,在mybatis 中的一个好处就是我们不要额外的去写一个实现类去实现这个接口,并且写很多冗余的CRUD 语句,可以这么理解 Mybatis 中所有的操作都是基于接口和映射文件进行配置的)
package cn.kingshion.dao;
import java.util.List;
public interface UsersDao {
public<Users> List getUsers();
}
5. 创建Mapper映射文件:
- 在 resource 文件夹下 新建映射文件 UsersMapper.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="cn.kingshion.dao.UsersDao">
<select id="getUsers" resultType="cn.kingshion.entity.Users">
select * from users
</select>
</mapper>
注意:
前面的 namespace 中写的是接口的路径;
select 中 id 是 接口中的方法;
resultType 是 实体类的返回类型;
select * from users 是数据库查询语句;
6. 在 Mybatis 配置文件 mybatis-config.xml 中 添加 Mapper 的配置
- 将之前写的 UsersMapper.xml 文件添加到 mybatis-config.xml 文件的 mappers 中: ·
7. 完成并测试
这个时候已经配置完成了,接下来就是测试自己的Mybatis到底有没有配置成功了:
直接在 Maven的 test 文件夹下新建测试类:
package cn.kingshion;
import cn.kingshion.dao.UsersDao;
import cn.kingshion.entity.Users;
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;
import java.util.List;
public class MybatisTest {
public static void main(String[] args) {
// String resource = "org/mybatis/example/mybatis-config.xml";
// 找到 mybatis-config.xml 文件路径,默认的根路径:resource文件夹
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
// 创建一个流来读取配置文件
inputStream = Resources.getResourceAsStream(resource);
// 使用下面两句 语句跟第三句的效果是一样的。
// SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// SqlSessionFactory factory = builder.build(inputStream);
// 通过inputStream 加载配置文件,然后创建 SqlSessionFactoryBuilder
// 再通过 SqlSessionFactoryBuilder 创建一个 工厂 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 用工厂建立 session 对象
SqlSession session = sqlSessionFactory.openSession();
// 使用 映射进行数据库操作
UsersDao usersMapper = session.getMapper(UsersDao.class);
List<Users> list = usersMapper.getUsers();
for (Users user : list) {
System.out.println(user);
}
// 记得关闭会话 和io流
session.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
8. 使用注解方式
-
修改 mybatis-config.xml 配置文件的mapper 映射
<mappers> <!-- 使用非注解方式 指向映射文件 --> <!-- <mapper resource="cn/kingshion/dao/UsersMapper.xml"/>--> <!-- 使用注解方式 指向接口 --> <mapper class="cn.kingshion.dao.UsersDao"/> </mappers>
-
在接口里面使用注解的方式:
package cn.kingshion.dao; import cn.kingshion.entity.Users; import org.apache.ibatis.annotations.Select; import java.util.List; public interface UsersDao { @Select("select * from users where id =1") public List<Users> getUsers(); }
-
最后测试