1、搭建 Mybatis 环境
- 导入 Mybatis 依赖的jar包
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!-- 导入 Junit 依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<!-- 导入 Mysql 依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
<scope>runtime</scope>
</dependency>
- 编写数据库配置文件 mysqlDb.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/hukan?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
- 编写 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="mysqlDb.properties"/>
<typeAliases>
<package name="com.hukanmasheng.pojo"/>
</typeAliases>
<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>
</configuration>
- 编写获取 SqlSeesion 的工具类
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static{
String resource="mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
/*
* 获取 SqlSession
* */
public static SqlSession getSqlSession()
{
return sqlSessionFactory.openSession(true);
}
}
-
编写数据库实体类与对应的Mapper和xml配置文件
实体类代码如下:public class Employee implements Serializable { /** * 员工 ID */ private String eid; /** * 员工姓名 */ private String name; /** * 所属部门 */ private int departmentId; /** * 手机号 */ private String telPhone; /** * 年龄 */ private int age; }
Mapper 代码如下:
public interface EmployeeMapper { List<Employee> findAll(); }
mapper.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.hukanmasheng.mapper.EmployeeMapper"> <select id="findAll" resultType="Employee"> select * from mybatis_employee </select> </mapper>
-
在 mybatis-config.xml 中注册实体类mapper
<mappers>
<mapper resource="mapper/EmployeeMapper.xml"/>
</mappers>
- 编写测试类,测试配置是否成功
public class Mytest {
@Test
public void test1(){
SqlSession ss = MybatisUtils.getSqlSession();
EmployeeMapper mapper = ss.getMapper(EmployeeMapper.class);
List<Employee> list = mapper.findAll();
for(Employee ee:list) {
System.out.println(ee);
}
}
}
执行成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BmKr19pZ-1647919105083)(img.png)]
2、mybatis-spring 快速入门
- 导入Spring需要的jar包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.17</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.12</version>
</dependency>
<dependency>
<groupId>org.apache.geronimo.bundles</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.8_2</version>
</dependency>
<!-- 关键 jar 包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
方式一 sqlSessionFactory + sqlSessionTemplate
· spring-sqlsession.xml 配置
- 1 编写数据源配置
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <!-- 数据库地址 --> <property name="url" value="jdbc:mysql://localhost:3306/hukan?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/> <!-- 用户名 --> <property name="username" value="root"/> <!-- 密码 --> <property name="password" value="123456"/> </bean>
- 2 sqlSessionFactory
-
<!--sqlSessionFactory--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!--绑定 mybatis 配置文件 --> <property name="configLocation" value="classpath:mybatis-config.xml" /> <!--自 1.3.0 版本开始,新增的 configuration 属性能够在没有对应的 MyBatis XML 配置文件的情况下,直接设置 Configuration 实例--> <!-- <property name="configuration"> <bean class="org.apache.ibatis.session.Configuration"> <property name="mapUnderscoreToCamelCase" value="true"/> </bean> </property>--> <property name="mapperLocations" value="classpath*:mapper/*.xml" /> </bean>
- 3 sqlSessionTemplate
<!--sqlSession--> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean>
- 4 需要给 Mapper 接口编写实现类
public class EmployeeMapperImpl implements EmployeeMapper { private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } public List<Employee> findAll() { EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class); return mapper.findAll(); } }
- 5 将 Mapper实现类注册到 Spring
<bean id="employeeMapper" class="com.hukanmasheng.mapper.EmployeeMapperImpl"> <property name="sqlSession" ref="sqlSession" /> </bean>
- 6 编写测试类
@Test
public void test2()
{
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
EmployeeMapperImpl mapper = (EmployeeMapperImpl)context.getBean("employeeMapper");
List<Employee> list = mapper.findAll();
for(Employee ee:list) {
System.out.println(ee);
}
}
执行成功
方式二:SqlSessionDaoSupport
这种配置更简单点,可以省去 SqlSessionTemplate 的配置,交给 SqlSessionDaoSupport 去创建。
SqlSessionDaoSupport
是一个抽象的支持类,用来为你提供 SqlSession
。调用 getSqlSession()
方法你会得到一个 SqlSessionTemplate
- 1 编写数据源配置 同方法一
- 2 sqlSessionFactory 同方法二
- 3 编写 Mapper 实现类,继承 SqlSessionDaoSupport 抽象类,代码如下:
public class EmployeeDaoSupportImpl extends SqlSessionDaoSupport implements EmployeeMapper{ public List<Employee> findAll() { EmployeeMapper mapper = getSqlSession().getMapper(EmployeeMapper.class); return mapper.findAll(); } }
- 4 编写测试类
@Test
public void testSqlSessionDaoSupport()
{
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
EmployeeDaoSupportImpl mapper = (EmployeeDaoSupportImpl)context.getBean("employeeDaoSupportMapper");
List<Employee> list = mapper.findAll();
for(Employee ee:list) {
System.out.println(ee);
}
}
执行成功