Spring整合mybatis
1. pom.xml引入依赖
引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!-- mybaits-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
在<build>
节点下添加以下内容,使配置文件正常输出到编译结果
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
2.mybatis-config.xml
classpath:mybatis-config.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 别名 -->
<!--<typeAliases>
<typeAlias type="com.pojo.User" alias="User"/>
</typeAliases>-->
<mappers>
<!--该mapper的配置文件为classpath:mapper/UserMapper.xml-->
<mapper
resource="mapper/UserMapper.xml"
/>
</mappers>
</configuration>
3.在ApplicationContext.xml配置Bean
在classpath下某个配置文件配置数据库连接的属性,如在system.properties中:
database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost:3306/reporter?serverTimezone=GMT
database.username=root
database.password=1234
在ApplicationContext.xml <beans>
下:
<!--数据库连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${database.driver}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
</bean>
<!-- 2. 将SqlSessionFactory交给Spring托管 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" scope="singleton">
<property name="dataSource" ref="dataSource"/> <!-- 加载数据环境 -->
<!-- 绑定mybatis配置文件 -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<!-- 3. 将SqlSession对象的加载交给Spring托管 -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<!-- 按照mybatis的习俗,通过工厂获得SqlSession会话对象 -->
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
4.实体类
如:
package pers.kanarien.chatroom.model.po;
public class UserInfo {
private String userId;
private String username;
private String password;
}
5.Dao接口
如:
package pers.kanarien.chatroom.dao;
import pers.kanarien.chatroom.model.po.UserInfo;
public interface UserInfoMapper {
List<UserInfo> getUserList();
}
6.mapper
classpath:mapper/UserMapper.xml
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="pers.kanarien.chatroom.dao.UserInfoMapper">
<!-- 解决字段-属性不匹配问题 -->
<resultMap id="map" type="pers.kanarien.chatroom.model.po.UserInfo">
<id column="id" property="id"/>
<id column="name" property="username"/>
<id column="pwd" property="password"/>
</resultMap>
<select id="getUserList" resultMap="map">
select * from user;
</select>
</mapper>
文件结构
7.使用
package pers.kanarien.chatroom.service.impl;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import pers.kanarien.chatroom.dao.UserInfoMapper;
import pers.kanarien.chatroom.model.po.UserInfo;
import pers.kanarien.chatroom.service.UserInfoService;
@Service
public class UserInfoServiceImpl implements UserInfoService {
@Autowired
private SqlSessionTemplate sqlSession;
@Override
public List<UserInfo> getUsers() {
UserInfoMapper mapper = sqlSession.getMapper(UserInfoMapper.class);
List<UserInfo> userInfos = mapper.selectUser();
return userInfos;
}
}