文章目录
目录
二、如何实现通过Spring去整合MyBatis?(基于xml)
3、创建Userdao层的接口,定义一个findAll()的抽象方法,使用@select注解的方式写上sql语句
4、创建Serivce层的UserService接口,定义一个findAll()的抽象方法
5、创建UserSerivce的实现类,定义一个类型为UserDao的属性,使用@AutoWired注解自动装配,并重写findAll方法,在方法内调用UserDao接口的方法
6、创建Spring的核心配置文件(applicationContext.xml)
三、总结
前言
使用xml配置的方法来整合MyBatis。首先回想一下,我们在单独使用MyBatis框架的时候,在配置MyBatis配置文件中做了哪些配置?然后如何去实现通过Spring去整合MyBatis?
提示:以下是本篇文章正文内容,下面案例可供参考
一、回顾
使用MyBatis框架的时候,在配置MyBatis配置文件中做了哪些配置?
1、在resources目录下创建了MyBatis配置文件
2、引入properties文件(前提时将数据库的连接信息存放在proerties文件,才需要引入)
3、配置数据库的环境(数据库用户名等等)
4、开启dao接口的注解扫描
以上都是在配置MyBatis时需要配置的内容
代码如下(示例):
<!--properties:引入配置文件-->
<!--resource:指定配置文件的路径-->
<properties resource="jdbc.properties"></properties>
<!--配置数据库的环境 default:使用哪个环境-->
<environments default="development">
<!--配置数据库连接的环境-->
<!--id: 是当前环境的唯一标识-->
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--配置连接参数-->
<!--driver: 驱动-->
<!--url: 路径-->
<!--username:用户名-->
<!--password:密码-->
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--批量配置: 配置Dao接口的包-->
<package name="com.itheima.dao"/>
</mappers>
二、如何实现通过Spring去整合MyBatis?(基于xml)
思路分析
1. Spring整合MyBatis,就是将MyBatis中配置的信息交给Spring来配置,不需要再由MyBatis进行配置,那么数据库的配置信息等就在Spring的配置文件中进行配置
2.那么在Spring配置文件中就需要以下基本配置信息
2.1 引入properties文件
2.2 数据库连接环境,也就是数据源
2.3 开启dao接口扫描
2.实现步骤
案例:查询所有用户信息(使用Spring+MyBaties)
1、创建Maven的web工程,导入依赖
2、创建一个bean类
3、创建Userdao层的接口,定义一个findAll()的抽象方法,使用@select注解的方式写上sql语句
4、创建Serivce层的UserService接口,定义一个findAll()的抽象方法
5、创建UserSerivce的实现类,定义一个类型为UserDao的属性,使用@AutoWired注解自动装配,并重写findAll方法,在方法内调用UserDao接口的方法
6、创建Spring的核心配置文件
7、创建测试类进行测试
1、创建Maven的web工程,导入依赖
代码如下(示例):
<dependencies>
<!--Spring核心依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<!--
整合MyBatis
1.数据库驱动依赖
2.连接池依赖
3.MyBatis依赖
4.MyBatis整合Spring
mybatis-spring jar
spring-jdbc jar
5.日志相关jar包
-->
<!--整合Mybatis-->
<!--1. 数据库依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--2. 连接池依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.23</version>
</dependency>
<!--3. mybatis本身的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--4. 整合mybatis和spring的依赖-->
<!--MyBatis提供的和Spring进行整合的jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!--spring对jdbc封装的jar包也要导入进来,否则mybatis无法整合-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<!--5. 日志依赖-->
<!-- 添加slf4j日志api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.20</version>
</dependency>
<!-- 添加logback-classic依赖 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- 添加logback-core依赖 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
2、创建一个bean类
代码如下(示例):
import java.io.Serializable;
//注意必须加上Serializable接口,防止报错
public class Account implements Serializable {
private Integer id;
private String userName;
private Integer password;
public Account() {
}
public Account(Integer id, String userName, Integer password) {
this.id = id;
this.userName = userName;
this.password = password;
}
//此处省略get/set方法
}
3、创建Userdao层的接口,定义一个findAll()的抽象方法,使用@select注解的方式写上sql语句
代码如下(示例):
public interface UserDao {
@Select("select * from tb_user")
List<User> findAll();
}
4、创建Serivce层的UserService接口,定义一个findAll()的抽象方法
//Serivce接口
public interface UserService {
List<User> findAll();
}
5、创建UserSerivce的实现类,定义一个类型为UserDao的属性,使用@AutoWired注解自动装配,并重写findAll方法,在方法内调用UserDao接口的方法
/*
Service层整合dao层:
1.在AccountServiceImpl类中定义AccountDao属性
2.使用@Autowired注入进来AccountDao的代理对象
3.调用方法
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List<User> findAll() {
return userDao.findAll();
}
}
6、创建Spring的核心配置文件(applicationContext.xml)
<!--
1、引入properties文件,使用<context:property-placeholder>
2、使用bean标签创建DataSource对象,并注入连接信息 相当于获取到连接 交给Spring管理
3、使用bean标签创建SqlSessionFactory对象,注入DataSource数据 相当于底层已经创建好SqlSession对象 交给Spring管理
4、使用bean标签创建MapperConfigurer对象,用于扫描dao包,交给Spring管理
5、使用<context:>开启注解扫描
-->
<!-- 1、引入properties文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 2、使用bean标签创建DataSource对象,并注入连接信息 相当于获取到连接 交给Spring管理 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${db.driverClass}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</bean>
<!-- 3、使用bean标签创建SqlSessionFactoryBean对象,注入DataSource数据 相当于底层已经创建好SqlSession对象 交给Spring管理 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 4、使用bean标签创建MapperConfigurer对象,用于扫描dao包,交给Spring管理 -->
<bean id="mapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.itheima.dao"/>
</bean>
<!-- 5、使用<context:>开启注解扫描 -->
<context:component-scan base-package="com.itheima"/>
7、创建测试类进行测试
@Test
public void method() {
//创建Spring工厂类,传入的参数是Spring核心配置文件
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("applicationContext.xml");
//获取UserService接口的实现类,使用UserService接口接收
UserService userService = applicationContext.getBean(UserService.class);
//调用userService的方法
List<User> all = userService.findAll();
//遍历数据
for (User account : all) {
System.out.println(account);
}
}
8、结果
User{id=1, userName='zhangsan', password=123}
User{id=2, userName='lisi', password=234}
User{id=3, userName='aaaa', password=123123}
总结
1、全文最重点的就是就是applicationContext.xml的配置内容
2、主要就是将原本在MyBatis配置文件中的做的时候,交给Spring去做
3、如果不是很清楚的话,建议把在使用MyBatis配置文件理解一下,然后基本上就可以明白了