一. 引入Spring等相关依赖
<dependencies>
<!--版本建议换成提示的更安全的版本-->
<!-- mybatis插件 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--mysql相关依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!--单元测试依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<!--lombok插件-->
<!--写实体类时方便生成相关的get/set/构造器等方法-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
</dependency>
<!-- PageHelper 分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.3</version>
</dependency>
<!--新增加的依赖 -->
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.28</version>
</dependency>
<!-- Spring集合mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.1.1</version>
</dependency>
<!--spring-jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.28</version>
</dependency>
<!--数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.18</version>
</dependency>
</dependencies>
二. 编写Spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 要配置SqlSessionFactory工厂 bean-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 引入数据源,这里用的是德鲁伊连接池,你也可以选择其他的-->
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="扫描你的mapper.xml文件(mappers/*.xml)"/>
<!--加载你的mybatis-config.xml配置文件-->
<!-- <property name="configLocation" value="mybatis-config.xml"/> -->
<!-- 注意:configLocation和configuration只能选择其中一个配置,
建议使用后者,现在直接可以把mybatis-config.xml删掉了-->
<property name="configuration">
<bean class="org.apache.ibatis.session.Configuration">
<!-- 配置mybatis驼峰命名映射-->
<property name="mapUnderscoreToCamelCase" value="true"/>
<!-- 配置mybatis日志-->
<property name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl"/>
</bean>
</property>
<!-- 配置插件-->
<property name="plugins">
<array>
<!-- 分页插件-->
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
<!-- 设置为true时,当页码小于等于0显示第一页,大于最大页码时显示最后一页;默认为false-->
reasonable=true
</value>
</property>
</bean>
</array>
</property>
</bean>
<!-- 配置druid数据源 对应上面sqlSessionFactory的dataSource属性-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/数据库"/>
<property name="username" value="用户名"/>
<property name="password" value="密码"/>
</bean>
<!-- 为单个Mapper接口配置,通过MapperFactoryBean
能够产生类似Mapper接口的实现类对象,从而能够调用接口中的方法 -->
<!-- <bean id="buildingMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
声明要传入的接口,相当于原材料
<property name="mapperInterface" value="com.wsl.wy.mapper.BuildingMapper" />
配置sqlSessionFactory
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>-->
<!-- 单个配置过于繁琐,采用下面的方式可以直接扫描mapper接口所在的包,全部配置-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.wsl.wy.mapper" />
</bean>
<!-- 对普通类进行属性注入例子,将其对象交给spring,我们直接从容器中获取,而不采用new的方式-->
<bean id="buildingService" class="com.wsl.wy.service.impl.BuildingServiceImpl">
<!-- ref值的解释:当上一层调用下一层的方法时,一般会创建下一层的实现类对象从而调用方法,
然我们现在不再用new的方式了,而是把他当作自己的属性进行配置,而值也是从容器中拿。因为上面我们配置
了直接扫描mapper接口所在的包;spring为每个mapper接口配置bean,且默认id为 接口名首字母小写,因此
这里的ref="buildingMapper"
-->
<property name="buildingMapper" ref="buildingMapper"/>
</bean>
</beans>
三. 测试代码
@Test
public void testAdd() {
//从容器中获取BuildingServiceImpl对象
BuildingService service =
new ClassPathXmlApplicationContext("spring.xml").
getBean("buildingService", BuildingService.class);
Building building1 = new Building();
building1.setHouseNumber(5);
//我们就可以调用BuildingService实现类里的方法了
service.addABuilding(building1);
}