0%

Spring整合MyBatis

血与泪的教训

之前少导了个依赖 spring-orm

提前准备

开启注解支持

spring配置文件中加上

1
<context:component-scan base-package="com.czw"></context:component-scan>

一个接口

1
public interface IAccountMapper {
2
    String getFirst();
3
}

一个业务层

1
@Service
2
public class AccountServiceImpl implements IAccountService {
3
    @Autowired
4
    private IAccountMapper accountMapper;
5
	//自动注入接口实现
6
    public String getFirst(){
7
        return accountMapper.getFirst();
8
    }
9
}

一张表

一个对应接口的xml文件

1
<?xml version="1.0" encoding="utf-8" ?>
2
<!DOCTYPE mapper
3
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
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
<?xml version="1.0" encoding="UTF-8"?>
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