Spring和mybatis整合
步骤
第一步 添加依赖
在pom.xml中国添加依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.1</version>
</dependency>
第二步
第二步 在Spring中管理SqlSessionFactory
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据源 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置mybatis xml映射文件位置 -->
<property name="mapperLocations" value="classpath:/mapper/*"/>
第三步
如果是注解的方式配置的Mapper,我们需要在Spring配置文件中添加mybatis的schema以支持mybatis注解扫描
<context:property-placeholder location="classpath:jdbc.properties"/>
<context:component-scan base-package="com.lanou3g.service"/>
<mybatis:scan base-package="com.lanou3g.mapper" />
示例
配置容器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
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
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://mybatis.org/schema/mybatis-spring
http://mybatis.org/schema/mybatis-spring.xsd">
<context:property-placeholder location="classpath:jdbc.properties"/>
<context:component-scan base-package="com.lanou3g.service"/>
<mybatis:scan base-package="com.lanou3g.mapper" />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="${table.jdbc.url}"/>
<property name="driverClassName" value="${table.jdbc.driver}"/>
<property name="username" value="${table.jdbc.user}"/>
<property name="password" value="${table.jdbc.password}"/>
</bean>
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据源 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置mybatis xml映射文件位置 -->
<property name="mapperLocations" value="classpath:/mapper/*"/>
</bean>
</beans>
通过mybatis映射方法
List<Message> selectByExample(MessageExample example);
<select id="selectByExample" parameterType="com.lanou3g.bean.MessageExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List"/>
from message
<if test="_parameter != null">
<include refid="Example_Where_Clause"/>
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
spring容器调用
public static void main(String[] args) throws SQLException {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
MessageServiceImpl messageService = ctx.getBean(MessageServiceImpl.class);
List<Message> messageList = messageService.queryAll();
log.info("" + messageList);
}
输出结果
[Message{id=1, fromId=1, toId=2, subject='好烦', content='好烦啊', createtime=Mon Jun 10 10:15:01 CST 2019, status=1, attachment='http://localhost:8080/sms/upload/3_1560132731828.png'}
, Message{id=2, fromId=1, toId=2, subject='好烦1', content='111', createtime=Mon Jun 10 10:17:06 CST 2019, status=1, attachment='http://localhost:8080/sms/upload/a_1560132993286.jpg'}
, Message{id=3, fromId=1, toId=2, subject='好烦2', content='昂发', createtime=Mon Jun 10 11:35:54 CST 2019, status=1, attachment='http://localhost:8080/sms/upload/sms_btn_goback_1560137747015.png'}
]