一、配置。
1.spring配置类
package com.example.Config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
@Configuration
@ComponentScan("com.example")
@Import({JdbcConfig.class, MyBatisConfig.class})
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {
}
2.jdbc配置类
package com.example.Config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
import java.beans.PropertyVetoException;
//标志spring配置类加载property文件的配置
public class JdbcConfig {
//property文件的配置使用value配置的表达式取出
@Value("${jdbc.driver}")
private String driver ;
@Value("${jdbc.url}")
private String url ;
@Value("${jdbc.username}")
private String username ;
@Value("${jdbc.password}")
private String password ;
//标注在方法上,该方法的返回值作为bean存在spring容器内
@Bean("dataSource")
public DataSource getDataSource() throws PropertyVetoException {
//存储数据源接口池
DruidDataSource druidDataSource = new DruidDataSource();
//设置数据源参数
druidDataSource.setDriverClassName(driver);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
//返回数据源
return druidDataSource;
}
}
3.mybatis配置类
package com.example.Config;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
public class MyBatisConfig {
@Bean
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
// 实例化
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
//若是其他文件则修改包路径
sqlSessionFactoryBean.setTypeAliasesPackage("com.itheima.domain");
sqlSessionFactoryBean.setDataSource(dataSource);
return sqlSessionFactoryBean;
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
//在这可修改其他配置类
msc.setBasePackage("com.example.Dao");
return msc;
}
}
4.整合Mybatis
二、具体实现。
1.pom.xml文件中导入依赖,
由于之前的总是使用的是MyBatis中内置的连接池,现在使用Druid连接池。在resources目录下导入properties文件(用于存放数据库信息)
<!--依赖管理-->
<dependencies>
<!--Spring整合junit单元测试依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.2.RELEASE</version>
<scope>test</scope>
</dependency>
<!--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.创建AccountDao接口
Dao层是用来与数据库操作的层,AccountDao就是操作Account表的类
public interface AccountDao {
@Insert("insert into account(name,money)values(#{name},#{money})")
void save(Account account);
@Delete("delete from account where id = #{id} ")
void delete(Integer id);
@Update("update account set name = #{name} , money = #{money} where id = #{id} ")
void update(Account account);
@Select("select * from account")
List<Account> findAll();
@Select("select * from account where id = #{id} ")
Account findById(Integer id);
}
到这就完成了spring整合mybatis,在业务层(service)可以调用AccountDao类下的方法。