整合DBCP请参考主页文章spring整合DBCP
前期准备工作
删除dao层的实现类,只留下接口即可。
在resource文件夹下导入dao层对应的xml文件以及mybatis的核心配置文件,配置文件中只写加载映射文件的代码即可,如下所示
<?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>
//只写映射文件的代码
<mappers>
<mapper resource="dao/userMapper.xml"></mapper>
</mappers>
</configuration>
第一步
导入所需jar包
<!--mybatis项目所需jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--整合mybatis与spring需要的jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
第二步
书写核心配置文件beans.xml
<!--开启注解-->
<context:annotation-config/>
<!--组件扫描-->
<context:component-scan base-package="com.xszx"></context:component-scan>
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///sjt2405"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<!--创建sqlSessionFactory对象-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--注入数据源对象-->
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="mybatis-config.xml"></property>
</bean>
<!--创建sqlSessionTemplate对象-->
<!--需要配置Spring专属的SqlSession,以便与当作参数传递给其他的类使用-->
<!--sqlSessionTemplate没有无参构造,所以注入时需要使用构造方法注入-->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
</bean>
第三步
将原本创建userDao的代码改成创建sqlSessionTemplate并且去读取userDao.class
@Service // 控制反转的个性化注解 还有@controller、@Repository
public class UserServiceImpl implements UserService {
private SqlSessionTemplate sqlSessionTemplate;
@Autowired //依赖注入的注解,默认是byType,可以使用@Qualifier注解来指定名称
public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
this.sqlSessionTemplate = sqlSessionTemplate;
}
@Override
public void addUser(User user) {
System.out.println("完成业务");
UserDao userDao = sqlSessionTemplate.getMapper(UserDao.class);
userDao.add(user);
}
}
第四步
测试
//测试层
public class test {
public static void main(String[] args) throws Exception {
//读取核心配置文件
BeanFactory beanFactory = new ClassPathXmlApplicationContext("beans.xml");
//获取bean(注解)
UserController userController =(UserController) beanFactory.getBean("userController");
//执行
userController.addUser();
}
}
//controller层
@Controller //controller控制反转的个性化注解,通用的是@Component
public class UserController {
User user = new User();
UserService userServiceImpl;
@Resource
public void setUserServiceImpl(UserService userServiceImpl) {
this.userServiceImpl = userServiceImpl;
}
public void addUser() throws Exception {
user.setRole(1);
user.setName("DBCP");
user.setPwd("123");
//执行
userService.addUser(user);
}
}