一. 搭建环境
1. 创建数据库
-
sql语句
# 创建表 create database mybatis; use mybatis; create table people( id int(10) primary key, name varchar(16) default null, pwd varchar(32) default null )engine=innodb default charset=utf8; # 插入数据 insert into people(id, name, pwd) values (1, "people1", "123456"), (2, "people2", "123456"), (3, "people3", "123456"), (4, "people4", "123456"), (5, "people5", "123456"), (6, "people6", "123456"), (7, "people7", "123456"), (8, "people8", "123456")
-
结果
2. 创建maven项目
- 新建一个普通的maven项目
- 删除src目录
- 导入maven依赖
<dependencies> <!--MySQL驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <!--mybatis--> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <!--junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
二. 创建一个maven模块
1. 编写mybatis的核心配置文件(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> <!-- 可以编写多个环境, 但是只有一个会生效, 通过指定id选择使用哪个环境 --> <environments default="test"> <environment id="test"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.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="123456"/> </dataSource> </environment> </environments> <!--每一个Mapper.xml 都需要再Mybatis核心配置文件中注册--> <mappers> <mapper resource="com/hjf/dao/PeopleMapper.xml"/> </mappers> </configuration>
2. 编写mybatis的工具类(MybatisUtils)
- 代码
package com.hjf.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; /** * @author Jiang锋时刻 * @create 2020-08-14 12:30 */ public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory = null; static { try { // 1. 获取sqlSessionFactory对象 // 读取配置文件中的信息 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } /** * 既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。 * SqlSession 提供了在数据库执行 SQL 命令所需的所有方法 */ public static SqlSession getSqlSession() { SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; } }
三. 编写代码
1. 根据数据库表中的字段创建实体类(People)
现在严格按照列名创建属性名
-
代码
package com.hjf.pojo; /** * @author Jiang锋时刻 * @create 2020-08-16 17:21 */ public class People { private int id; private String name; private String pwd; public People() { } public People(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 + '\'' + '}'; } }
2. 创建Dao接口(PeopleMapper)
-
代码
package com.hjf.dao; import com.hjf.pojo.People; import java.util.List; public interface PeopleMapper { /** * 获取人员信息列表 * @return */ List<People> getPeopleList(); }
3. 创建一个与Dao接口同名的配置文件(PeopleMapper.xml)
接口实现类由原来的PeopleDaoImpl转变为一个 Mapper配置文件.
-
代码
<?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"> <!--namespace=绑定一个对应的Dao/Mapper接口--> <!--namespace中的包名要和dao中的包名保持一致--> <mapper namespace="com.hjf.dao.PeopleMapper"> <!-- select: 查询语句 id: 对应方法名 resultType: sql语句执行的返回值类型(完整的名称) --> <select id="getPeopleList" resultType="com.hjf.pojo.People"> select * from people </select> </mapper>
-
注意
-
创建的每一个配置文件都需要在核心配置文件中注册 mappers
<mappers> <mapper resource="com/hjf/dao/PeopleMapper.xml"/> </mappers>
-
如果未引入会报如下错误
org.apache.ibatis.binding.BindingException: Type interface com.hjf.dao.PeopleMapper is not known to the MapperRegistry.
-
4. 创建测试类
- 代码
package com.hjf.dao; import com.hjf.pojo.People; import com.hjf.utils.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.List; /** * @author Jiang锋时刻 * @create 2020-08-16 19:13 */ public class PeopleMapperTest { @Test public void testGetPeopleList() { // 1. 获得sqlSession的对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); // 方式1: getMapper PeopleMapper mapper = sqlSession.getMapper(PeopleMapper.class); List<People> peopleList = mapper.getPeopleList(); // 方法2: // List<People> peopleList = sqlSession.selectList("com.hjf.dao.PeopleMapper.getPeopleList"); for (People people : peopleList) { System.out.println(people); } // 关闭资源 sqlSession.close(); } }
说明:
- 本文参考了狂神的Mybatis的课件
- 课程链接