8-----spring整合mybatis
直接上手
导包
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.2.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.10.RELEASE</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> </dependencies>
写一下实体类
package com.sicheng.pojo; public class User { private int id; private String name; private String 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; } public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } public User() { } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } }
建立数据库
配置mybatis
原来的配置
现在的配置-----除了设置,就基本不配置
编写映射文件usermapper
<?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.sicheng.dao.UserMapper"> <select id="selectUser" resultType="User"> select * from user; </select> </mapper>
编写UserMapper接口
package com.sicheng.dao; import com.sicheng.pojo.User; import java.util.List; public interface UserMapper { public List<User> selectUser(); }
编写UserMapper的实现类
package com.sicheng.dao; import com.sicheng.pojo.User; import org.apache.ibatis.session.SqlSession; import org.mybatis.spring.SqlSessionTemplate; import java.util.List; public class UserDaoImpl implements UserMapper { private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } public List<User> selectUser() { UserMapper mapper = sqlSession.getMapper(UserMapper.class); return mapper.selectUser(); } }
你应该看到了注入吧!!!!!
回顾一下mybatis的流程
- 创建SqlSessionFactory对象
- 开启一个会话,也就是返回一个SQLSession对象
那么:
- SqlsessionFactory是通过mybatis-config文件建立的,那么就需要一个datasource类,还有配置的mapper路径;配置的时候注入一下就完事了
- SqlSession对象是通过SqlSessionFactory构造的。
- UserDao中注入了一个SqlSession
所以配置文件spring
除了删除过程
Spring提供了一个类,SqlSessionDaoSupport,这个类是默认注册了的。
接收一个SqlSessionFactory,然后就可以返回一个SqlSession
public class UserDaoImpl extends SqlSessionDaoSupport implements UserMapper { public List<User> selectUser() { UserMapper mapper = getSqlSession().getMapper(UserMapper.class); return mapper.selectUser(); } }
配置文件