Spring简介
Spring技术是JavaEE开发必备技能,企业开发技术选型命中率>90%
专业角度
- 简化开发,降低企业级开发的复杂性
- 框架整合,高效整合其他技术,提高企业级应用开发与运行效率
简化开发
- IoC
- AOP
- 事务处理
框架整合
- MyBatis
使用Spring整合Mybatis快速入门
1、创建Maven项目,导入坐标
需要以下依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
</dependencies>
2、编写连接池配置文件
jdbc.Driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql:///bookstore?useSSL=false
jdbc.username=root
jdbc.password=***
3、编写Domain类用于封装数据库数据,并且使用@Component注解定义bean
package com.itheima.domain;
import org.springframework.stereotype.Component;
@Component
public class Book {
private Integer id;
private String name;
private Double price;
private Integer pnum;
private String category;
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + ''' +
", price=" + price +
", pnum=" + pnum +
", category='" + category + ''' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public Integer getPnum() {
return pnum;
}
public void setPnum(Integer pnum) {
this.pnum = pnum;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
}
4、编写BookDao接口,存放用注解查询Sql语句,和方法,使用@Repository定义数据层bean
@Repository
public interface BookDao {
@Select("select * from books where id = #{id}")
Book selectById(int id);
}
5、编写SpringConfig配置文件
使用@Configuration注解表名Spring配置文件,使用@Component注解查找Spring要管理的Bean类,使用@Import注解导入Mybatis配置文件和jdbc数据库连接池配置文件,使用@PropertySource导入数据库连接池配置文件
@Configuration
@ComponentScan("com.itheima")
@Import({MybatisConfig.class,jdbcConfig.class})
@PropertySource("jdbc.properties")
public class SpringConfig {
}
6、编写数据库连接池对象配置文件,使用Druid连接池对象
public class jdbcConfig {
@Value("${jdbc.Driver}")
private String diver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(diver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
7、编写Mybatis配置文件
配置SqlSessionFactoryBean对象,自动装配Druid数据源对象和MapperScannerConfigurer对象
public class MybatisConfig {
@Bean
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
ssfb.setTypeAliasesPackage("com.itheima.domain");
ssfb.setDataSource(dataSource);
return ssfb;
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.itheima.dao");
return msc;
}
}
8、编写BookService对象
使用@Service标注服务层Bean类,自动装填BookDao对象
@Service
public class BookService {
@Autowired
private BookDao bookDao;
public Book findBookById(int id){
Book book = bookDao.selectById(id);
return book;
}
}
9、编写测试类
public class App {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
BookService bookService = ctx.getBean(BookService.class);
Book bookById = bookService.findBookById(1001);
System.out.println(bookById);
}
}
总结
Spring整合mybatis需要管理配置哪两个Bean,这两个Bean作用分别是什么?
- 使用SqlSessionFactoryBean封装SqlSessionFactory需要的环境信息
2. 使用MapperScannerConfigurer加载Dao接口,创建代理对象保存到IOC容器中