整合mybatis
声明
本文为其他博主原创文章整合,仅用作个人学习,特此声明
参考文章链接
(3条消息) B站 - 狂神 - Spring5课堂笔记_夜里的雨的博客-CSDN博客_狂神spring5笔记
12、整合mybatis
mybatis-spring官网:https://mybatis.org/spring/zh/
mybatis的配置流程:
- 编写实体类
- 编写核心配置文件
- 编写接口
- 编写Mapper.xml
- 测试
什么是mybatis-spring?
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。 最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring。
12.1mybatis-spring-方式一
- 编写数据源配置
- sqISessionFactory
- sqISessionTemplate(相当于sqISession)
- 需要给接口加实现类【new】
- 将自己写的实现类,注入到Spring中
- 测试!
1.导入jar包
org.springframework
spring-webmvc
5.2.7.RELEASE
org.aspectj
aspectjweaver
1.9.4
org.springframework
spring-jdbc
5.2.7.RELEASE
org.mybatis
mybatis
3.5.2
org.mybatis
mybatis-spring
2.0.4
mysql
mysql-connector-java
8.0.12
org.projectlombok
lombok
1.18.12
src/main/java
**/*.properties
**/*.xml
false
src/main/resources
**/*.properties
**/*.xml
false
mapper目录下的 UserMapper、UserMapperImpl、UserMapper.xml
2.pojo实体类User
package pojo;
import lombok.Data;
@Data
public class User {
private int id;
private String name;
private String pwd;
}
3.接口UserMapper
package mapper;
import java.util.List;
import pojo.User;
public interface UserMapper {
public List getUser();
}
4.接口实现类UserMapperImpl
package mapper;
import java.util.List;
import org.mybatis.spring.SqlSessionTemplate;
import pojo.User;
public class UserMapperImpl implements UserMapper{
//我们的所有操作,在原来都使用sqlSession来执行,现在使用SqlSessionTemplate;
private SqlSessionTemplate sqlSessionTemplate;
public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
this.sqlSessionTemplate = sqlSessionTemplate;
}
public List getUser() {
UserMapper mapper = sqlSessionTemplate.getMapper(UserMapper.class);
return mapper.getUser();
}
}
5.UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
resource目录下的 mybatis-config.xml、spring-dao.xml、applicationContext.xml
6.mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
7.spring-dao.xml
<?xml version="1.0" encoding="UTF-8"?>
8.applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
测试类
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import mapper.UserMapper;
import pojo.User;
public class MyTest6 {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userMapper = (UserMapper) context.getBean("userMapper");
for (User user : userMapper.getUser()) {
System.out.println(user);
}
}
}
12.2mybatis-spring-方式二
UserServiceImpl2:继承SqlSessionDaoSupport 类(不用配置SqlSessionTemplate)
package mapper;
import pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import java.util.List;
//继承SqlSessionDaoSupport 类
public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper {
public List getUser() {
SqlSession sqlSession = getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
return mapper.getUser();
//或者一句话:return getSqlSession().getMapper(UserMapper.class).getUser();
}
}
spring-dao.xml
<?xml version="1.0" encoding="UTF-8"?>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
测试
public class MyTest6 {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userMapper = (UserMapper) context.getBean("userMapper2");
for (User user : userMapper.getUser()) {
System.out.println(user);
}
}
}