spring整合Mybatis需要导入多个jar,我就不一一说了,直接赋值pom.xml依赖就行了
org.springframework spring-webmvc5.3.16 org.mybatis mybatis3.5.9 org.mybatis mybatis-spring2.0.7 junit junit4.13 org.projectlombok lombok1.18.22 org.aspectj aspectjweaver1.9.8 mysql mysql-connector-java8.0.28 org.springframework spring-jdbc5.3.16 org.aspectj aspectjweaver1.9.8
版本关联
准备工作完成之后,我们就可以开始整合了。
第一步:新建applicationContext.xml的(Spring配置文件)
tips:填写你们自己对应的用户名和密码,如果查询的结果是乱码,在jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8。注意xml配置文件中
&被转义了,& (分号也不能省略)才是普通的&,&表示和的意思。
第二步:新建Mybatis核心配置文件,在Spring中获取SqlSessionFactory对象,并且绑定mybatis核心配置文件,并将dataSource赋值给SqlSessionFactoryBean对象的dataSource属性。
第三步:给SqlSessionTemplate属性赋值,他就是SqlSession
这里为什么要用下标0 ?
因为SqlSessionTemplate类的第一个属性就是SqlSessionFactory对象,所有可以使用index=0
第四步:测试
或者,还有另外一种思想,当你拿到SqlSesesionTemplate类之后,新建一个UserMapperImple的类去实现UserMapper,并且注册到Spring中,这个类中内置一个SqlSessionTemplate属性,提供一个set方法,在Spring中通过set注入,将SqlSessionTemplate类注入给这个UserMapperImple类,然后通过此类去实现UserMapper中的所有方法,并且返回结果,我们只需要在测试类中调用即可,将此实现类看成是Service层的实现类。
使用实现类充当Service层的思想去做
第四步:新建UserMapperImple类,实现UserMapper接口
package com.guanzhu.mapper;
import com.guanzhu.POJO.User;
import org.junit.Test;
import org.mybatis.spring.SqlSessionTemplate;
import java.util.ArrayList;
import java.util.List;
public class UserMapperImple implements UserMapper {
private SqlSessionTemplate sqlSessionTemplate;
public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate){
this.sqlSessionTemplate=sqlSessionTemplate;
}
public List getUsers() {
UserMapper mapper = sqlSessionTemplate.getMapper(UserMapper.class);
for (User user : mapper.getUsers()) {
System.out.println(user);
}
return new ArrayList();
}
public int addUser(User user) {
UserMapper mapper = sqlSessionTemplate.getMapper(UserMapper.class);
int i = mapper.addUser(user);
if(i>0){
//大于0则提交事务
sqlSessionTemplate.commit();
return i;
}else{
//不满足条件则回滚事务
sqlSessionTemplate.rollback();
return i;
}
}
}
第五步:在Spring中注册
第六步:测试
@Test
public void test04(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapperImple umi = ac.getBean("userMapperImple", UserMapperImple.class);
System.out.println("另外一种思想!");
List users = umi.getUsers();
for (User user : users) {
System.out.println(user);
}
}
直接通过getBean ,通过id获取实现类就行了。通过调用实现类中已经写好的方法,来完成我们的需求,这样写,分工更加明确,当然,你要是不想多写一个实现类,第一种方式也是可以的。
最后,如果你遇到了
org.apache.ibatis.binding.BindingException: Type interface com.guanzhu.mapper.UserMapper is not known to the MapperRegistry.
问题原因,Spring核心配置文件中没有配置绑定Mybatis的核心配置文件,
如果少了下面这行代码,mapper.xml文件就不会被注册,加上即可解决。
今天你进步了吗?
人生没有白走的路,每走一步都算数。
2022.3.13 星期天 中午 晴



