[Tecnología de Spring] Arquitectura de Spring
[Tecnología de Spring] Caso de entrada de IOC y DI de Spring
[Tecnología de Spring] Configuración y ejemplos de Bean de Spring
[Tecnología de Spring] Inyección de dependencia de Spring (configuración DI)
[Tecnología de Spring] Gestión de configuración de recursos de terceros de Spring
[Tecnología de Spring ] Spring Container Technology
[Spring Technology] Spring Anotation Development
[Spring Technology] Spring Integration Mybatis&Junit Unit Test
[Spring Technology] Spring AOP
[Spring Technology] Spring Transaction Management
Spring integra la prueba unitaria de Mybatis y Junit
-
-
- 1. Spring integra Mybatis [clave]
-
- 1.1 Análisis del pensamiento
- 1.2 Implementación del código
-
- 【Trabajo previo】
- [Paso 1] Importar Spring para integrar las dependencias de Mybatis
- [Paso 2] Cree JdbcConfig para configurar la fuente de datos DataSource
- [Paso 3] Crear MybatisConfig para integrar mybatis
- [Paso 4] Cree una clase de configuración principal SpringConfig para escanear paquetes y cargar otras clases de configuración
- [Paso 5] Definir la clase de prueba para la prueba
- 2. Spring integra las pruebas unitarias de Junit [clave]
-
1. Spring integra Mybatis [clave]
1.1 Análisis del pensamiento
importación de problemas
¿Quién es el objeto principal de mybatis para las operaciones de la capa de datos?
1.1.1 Análisis del objeto central del programa MyBatis
1.1.2 Integrar MyBatis
- Use SqlSessionFactoryBean para encapsular la información del entorno requerida por SqlSessionFactory
- Use MapperScannerConfigurer para cargar la interfaz Dao, cree un objeto proxy y guárdelo en el contenedor IOC
1.2 Implementación del código
importación de problemas
Pregunta 1: ¿Cuál es la dependencia de Spring al integrar mybatis?
Pregunta 2: ¿Qué dos beans deben ser administrados y configurados por Spring para integrar mybatis y cuáles son las funciones de estos dos beans?
【Trabajo previo】
- Agregue spring-context, druid, mybatis, mysql-connector-java y otras dependencias básicas en pom.xml.
- Preparar el código básico de capa de servicio y dao
public interface AccountService {
void save(Account account);
void delete(Integer id);
void update(Account account);
List<Account> findAll();
Account findById(Integer id);
}
@Service
public class AccountServiceImpl implements AccountService {
@Autowired
private AccountDao accountDao;
public void save(Account account) {
accountDao.save(account);
}
public void update(Account account){
accountDao.update(account);
}
public void delete(Integer id) {
accountDao.delete(id);
}
public Account findById(Integer id) {
return accountDao.findById(id);
}
public List<Account> findAll() {
return accountDao.findAll();
}
}
public interface AccountDao {
@Insert("insert into tbl_account(name,money)values(#{name},#{money})")
void save(Account account);
@Delete("delete from tbl_account where id = #{id} ")
void delete(Integer id);
@Update("update tbl_account set name = #{name} , money = #{money} where id = #{id} ")
void update(Account account);
@Select("select * from tbl_account")
List<Account> findAll();
@Select("select * from tbl_account where id = #{id} ")
Account findById(Integer id);
}
[Paso 1] Importar Spring para integrar las dependencias de Mybatis
<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>1.3.0</version>
</dependency>
[Paso 2] Cree JdbcConfig para configurar la fuente de datos DataSource
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db?useSSL=false
jdbc.username=root
jdbc.password=root
public class JdbcConfig {
@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
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(userName);
ds.setPassword(password);
return ds;
}
}
[Paso 3] Crear MybatisConfig para integrar mybatis
public class MybatisConfig {
//定义bean,SqlSessionFactoryBean,用于产生SqlSessionFactory对象
@Bean
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
ssfb.setTypeAliasesPackage("com.itheima.domain");
ssfb.setDataSource(dataSource);
return ssfb;
}
//定义bean,返回MapperScannerConfigurer对象
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.itheima.dao");
return msc;
}
}
[Paso 4] Cree una clase de configuración principal SpringConfig para escanear paquetes y cargar otras clases de configuración
@Configuration
@ComponentScan("com.itheima")
//@PropertySource:加载类路径jdbc.properties文件
@PropertySource("classpath:jdbc.properties")
@Import({
JdbcConfig.class,MybatisConfig.class})
public class SpringConfig {
}
[Paso 5] Definir la clase de prueba para la prueba
public class App {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
AccountService accountService = ctx.getBean(AccountService.class);
Account ac = accountService.findById(1);
System.out.println(ac);
}
}
2. Spring integra las pruebas unitarias de Junit [clave]
importación de problemas
¿Cuáles son las dos funciones de anotación de Spring que integran Junit?
[Paso 1] Importe la prueba de resorte de coordenadas de dependencia integrada
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--spring整合junit-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
[Paso 2] Use Spring para integrar cargadores de clases específicos de Junit
[Paso 3] Cargue el archivo de configuración o la clase de configuración
//【第二步】使用Spring整合Junit专用的类加载器
@RunWith(SpringJUnit4ClassRunner.class)
//【第三步】加载配置文件或者配置类
@ContextConfiguration(classes = {
SpringConfiguration.class}) //加载配置类
//@ContextConfiguration(locations={"classpath:applicationContext.xml"})//加载配置文件
public class AccountServiceTest {
//支持自动装配注入bean
@Autowired
private AccountService accountService;
@Test
public void testFindById(){
System.out.println(accountService.findById(1));
}
@Test
public void testFindAll(){
System.out.println(accountService.findAll());
}
}
Nota: La dependencia de junit debe ser al menos la versión 4.12, puede ser la versión 4.13, de lo contrario ocurrirá la siguiente excepción: