一、Pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>zyq_test_22_06_02</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mybatis-01</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.14</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.14</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.14</version>
</dependency>
</dependencies>
</project>
二、连接接参数:
# 连接数据库的参数
ds.url=jdbc:mysql://localhost:3306/mall_ams?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
ds.driver=com.mysql.cj.jdbc.Driver
ds.username=root
ds.password=root
# 使用mybatis时,配置SQL的XML文件的位置
#mybatis.mapper-locations=classpath:mapper/AdminMapper.xml
三、spring配置类:
package com.zyq.mybatis;
@Configuration
@PropertySource(value="classpath:db.properties",ignoreResourceNotFound=true)
//@PropertySource它不仅能读取properties文件,也能读取xml文件(比如db.xml)。还能自定义yaml解析器
//结合自定义PropertySourceFactory读取yaml文件(具体请参考文件"PropertiesSource读取yaml.md")
//ignoreResourceNotFound=true表示配置文件未读取到不会报异常
//@MapperScan("com.zyq.mybatis.mapper")//用于为mybatis接口生成代理对象
//@ComponentScan(basePackages = "com.zyq")用于创建bean对象
public class SpringConfig {
//注意: spring4.3之前读取db.properties需要手动注册一个PropertySourcesPlaceholderConfigurer
//如果用@Bean 通过方法形式注册,此方法需要用static修饰
//注意:spring4.3之后读取db.properties就直接用@PropertySource("classpath:db.properties")
/*
@Bean
public static PropertySourcesPlaceholderConfigurer
propertySourcesPlaceholderConfigurer(){
return new PropertySourcesPlaceholderConfigurer();
}
*/
//也可以用成员变量的方式获取db.properties中的数据,但是用了ssm和spring-test
//就可以直接通过ssm的Environment获取参数
// (不需要用成员变量的方式获取db.properties中的数据了)
//@Value("${ds.url}")
//private String url;
@Bean
public DataSource dataSource(Environment env){
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl(env.getProperty("ds.url"));
dataSource.setDriverClassName(env.getProperty("ds.driver"));
dataSource.setUsername(env.getProperty("ds.username"));
dataSource.setPassword(env.getProperty("ds.password"));
return dataSource;
}
}
四、测试类:
package com.zyq.mybatis;
//1.如果要使用xml配置文件的话并且使用的是Junit4
// 就用 @RunWith(SpringJUnit4ClassRunner.class)和
// @ContextConfiguration(locations={"classpath:spring/applicationContext.xml"})//Junit4
//2.如果要使用xml配置文件的话就并且使用的是Junit5
// 就用@SpringJUnitConfig和@ContextConfiguration("spring/applicationContext.xml")
//这个xml会首先从test路径中查找
//注意:@ContextConfiguration的作用是-加载Spring上下文从而能够获取spring容器中的对象
@SpringJUnitConfig(SpringConfig.class)
public class MyBatisTest {
@Autowired
Environment environment;
@Autowired
DataSource dataSource;
@Test
public void contextLoads() {
System.out.println("MybatisSpringTests.contextLoads()");
}
@Test
public void testGetConn() throws SQLException {
Connection connection = dataSource.getConnection();
System.out.println("数据库连接:"+connection);
connection.close();
}
}
2022-06-06 zhaoYongQi