spring mybatis Junit 整合总结
maven依赖
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!--spring-->
<spring.version>5.0.2.RELEASE</spring.version>
<!--日志打印框架-->
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.12</log4j.version>
<!--mysql-->
<mysql.version>5.1.6</mysql.version>
<!--mybatis-->
<mybatis.version>3.5.3</mybatis.version>
</properties>
<dependencies>
<!--引入依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!--mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
<!--mybatis的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!--
mybatis整合spring的依赖
-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- spring整合Junit的坐标-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
</dependencies>
spring中心配置文件 设置包扫描 并引入mybatis中心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--
包扫描
-->
<context:component-scan base-package="com.tge"></context:component-scan>
<!--引入mybatis中心配置文件-->
<import resource="classpath:MybatisConfig.xml"></import>
</beans>
mybatis 中心配置文件的设置
- 配置jdbc的环境:
1.1 配置dataSource(既可以使用spring内置的DataSource,又可以使用第三方的DataSource)
1.2 配置事务管理者(现在不做),后面学习声明式事务的时候再讲
2. 将SqlSessionFactoryBean 对象进行IOC配置到spring的核心容器中,并且将dataSource注入进去
3. 扫描dao包,创建出dao的代理对象,交给spring的核心容器管理
各种dao代理对象的id,就是接口名首字母改小写
注意创建dao.xml 路径用“/” 别用“.” 展示效果一样 但是会导致打包文件不在一起,导致错误找不到dao的方法
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 引入jdbc.properties -->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
<!--
2. spring整合mybatis
-->
<!--
1. 配置jdbc的环境:
1.1 配置dataSource(既可以使用spring内置的DataSource,又可以使用第三方的DataSource)
1.2 配置事务管理者(现在不做),后面学习声明式事务的时候再讲
2. 将SqlSessionFactoryBean 对象进行IOC配置到spring的核心容器中,并且将dataSource注入进去
3. 扫描dao包,创建出dao的代理对象,交给spring的核心容器管理
各种dao代理对象的id,就是接口名首字母改小写
-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="driverClassName" value="${jdbc.driverClassName}"></property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!--加载mybatis的主配置文件-->
<!--<property name="configLocation" value="classpath:MybatisConfig.xml"></property>-->
<!--别名配置的包扫描-->
<property name="typeAliasesPackage" value="com.tge.pojo"></property>
</bean>
<bean id="scannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.tge.dao"></property>
</bean>
</beans>
controller service 类上面增加对的的注解@controller @service,(注解只加到实现类上,接口不用加)
其他的字段 增加自动注入注解@Autowired 或@Resource
-
注入对象类型的属性:
-
- Autowired: 自动装配, 如果spring的核心容器中,只有一个该类型的对象,则自动把那个对象注入给当前属性;
-
如果spring的核心容器中,不止有一个该类型的对象,那么就会根据属性名匹配对象的id,匹配上哪个就注入哪个;
-
如果一个都匹配不上,那么我们还可以通过Qualifier指定要注入的对象的id
-
- Resource: 能够进行自动装配以及手动装配(比如接口有多个实现类的情况下)
@Controller
public class UserController {
@Resource(name = "userServiceImpl")
private UserService userService;
public String getName(){
//调用业务层的getName()方法
return userService.getName();
}
}
Junit 测试
public class MyTest {
@Test
public void tset01(){
ApplicationContext applicationContext =new ClassPathXmlApplicationContext("SpringConfig.xml");
UserController userController = (UserController) applicationContext.getBean("userController");
userController.select(2);
}
}
Junit 设置注解
可以直接注入 使用
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:SpringConfig.xml"})
public class MyTest {
@Autowired
UserController userController;
@Test
public void tset01(){
userController.select(2);
}
}