血与泪的教训
之前少导了个依赖 spring-orm
提前准备
开启注解支持
spring配置文件中加上
1 | <context:component-scan base-package="com.czw"></context:component-scan> |
一个接口
1 | public interface IAccountMapper { |
2 | String getFirst(); |
3 | } |
一个业务层
1 | |
2 | public class AccountServiceImpl implements IAccountService { |
3 | |
4 | private IAccountMapper accountMapper; |
5 | //自动注入接口实现 |
6 | public String getFirst(){ |
7 | return accountMapper.getFirst(); |
8 | } |
9 | } |
一张表

一个对应接口的xml文件
1 | |
2 | |
3 | |
4 | |
5 | <mapper namespace="com.czw.mapper.IAccountMapper"> |
6 | <!--名称空间和接口全类名对应--> |
7 | <select id="getFirst" resultType="String"> |
8 | <!--方法也要对应方法名--> |
9 | select username from user where user_id=1; |
10 | </select> |
11 | </mapper> |
再续前缘
首先,导好坐标
1 | |
2 | <project xmlns="http://maven.apache.org/POM/4.0.0" |
3 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
4 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
5 | <modelVersion>4.0.0</modelVersion> |
6 | <groupId>org.example</groupId> |
7 | <artifactId>SpringLearning</artifactId> |
8 | <version>1.0-SNAPSHOT</version> |
9 | <dependencies> |
10 | <dependency><!--mysql驱动--> |
11 | <groupId>mysql</groupId> |
12 | <artifactId>mysql-connector-java</artifactId> |
13 | <version>8.0.19</version> |
14 | </dependency> |
15 | <dependency><!--spring核心之一--> |
16 | <groupId>org.springframework</groupId> |
17 | <artifactId>spring-context</artifactId> |
18 | <version>5.2.3.RELEASE</version> |
19 | </dependency> |
20 | <dependency><!--mybatis核心--> |
21 | <groupId>org.mybatis</groupId> |
22 | <artifactId>mybatis</artifactId> |
23 | <version>3.5.3</version> |
24 | </dependency> |
25 | <dependency><!--数据源--> |
26 | <groupId>com.alibaba</groupId> |
27 | <artifactId>druid</artifactId> |
28 | <version>1.1.21</version> |
29 | </dependency> |
30 | <dependency><!--MyBatis整合Spring核心--> |
31 | <groupId>org.mybatis</groupId> |
32 | <artifactId>mybatis-spring</artifactId> |
33 | <version>1.3.0</version> |
34 | </dependency> |
35 | <dependency><!--忘了干嘛的--> |
36 | <groupId>org.springframework</groupId> |
37 | <artifactId>spring-tx</artifactId> |
38 | <version>5.2.3.RELEASE</version> |
39 | </dependency> |
40 | <dependency><!--spring对ORM框架的支持--> |
41 | <groupId>org.springframework</groupId> |
42 | <artifactId>spring-orm</artifactId> |
43 | <version>5.2.3.RELEASE</version> |
44 | </dependency> |
45 | </dependencies> |
46 | </project> |
然后,准备数据库连接
准备外置database.properties文件
1 | driverClassName=com.mysql.cj.jdbc.Driver |
2 | url=jdbc:mysql://localhost:3306/learningssm?serverTimezone=UTC |
3 | username=root |
4 | password=root |
在spring配置文件中引入
1 | <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><!--引入外部配置文件--> |
2 | <property name="location" value="classpath:database.properties"/> |
3 | </bean> |
4 | |
5 | <!--配置连接池--> |
6 | <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> |
7 | <property name="driverClassName" value="${driverClassName}"/> |
8 | <property name="url" value="${url}"/> |
9 | <property name="username" value="${username}"/> |
10 | <property name="password" value="${password}"/> |
11 | </bean> |
最后,整合MyBatis
在spring配置文件中加入
1 | <!-- 根据配置文件得到SqlSessionFactory --> |
2 | <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"> |
3 | <property name="configLocation" value="classpath:mybatis-config.xml"></property> |
4 | <property name="dataSource" ref="dataSource"></property> |
5 | <property name="mapperLocations" value="classpath:mapper/*.xml"></property> |
6 | </bean> |
7 | |
8 | <!-- 将接口实现注入IoC容器 --> |
9 | <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> |
10 | <property name="basePackage" value="com.czw.mapper"></property> |
11 | </bean> |
测试
1 | public static void main(String[] args) { |
2 | ApplicationContext ac= new ClassPathXmlApplicationContext("applicationContext.xml"); |
3 | //拿到IOC容器 |
4 | IAccountService as= ac.getBean("accountServiceImpl",IAccountService.class); |
5 | //拿到业务层对象 |
6 | System.out.println(as); |
7 | System.out.println(as.getFirst()); |
8 | //调用方法 |
9 | } |

NICE啊,舒服了
总结
头发-1