1、引入依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
2、实体类
public class User {
private int id;
private String name;
private String pwd;
3、接口
public interface UserMapper {
List<User> getUser();
}
4、mapper.xml实现查询
<!--namespace需要绑定一个对应的DAO/Maper接口-->
<mapper namespace="com.jia.dao.UserMapper">
<select id="getUser" resultType="User">
select * from User
</select>
</mapper>
5、整合mybatis到spring
<!-- 使用spring数据源替换mybatis-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!--sqlSessionFactory交给spring管理-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 绑定mybatis配置-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<!--SqlSessionTemplate就是mybatis中的sqlSession-->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<!--只能使用构造器注入sqlSessionFactory,因为SqlSessionTemplate没有set方法-->
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
6、新建一个实体类交给spring,注入sqlSession
public class UserMapperImpl implements UserMapper{
private SqlSessionTemplate sqlSession;
public void setSqlSession(SqlSessionTemplate sqlSession){
this.sqlSession = sqlSession;
}
public List<User> getUser() {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
return mapper.getUser();
}
}
<bean id="UserMapper" class="com.jia.dao.UserMapperImpl">
<!--注入sqlSession-->
<property name="sqlSession" ref="sqlSession"/>
</bean>
7、测试
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userMapper= (UserMapper) context.getBean("UserMapper");
List<User> userList = userMapper.getUser();
for (User user : userList) {
System.out.println(user);
}
}
8、再优化SqlSessionDaoSupport
SqlSessionDaoSupport
是一个抽象的支持类,用来为你提供 SqlSession
。调用 getSqlSession()
方法你会得到一个 SqlSessionTemplate
,之后可以用于执行 SQL 方法,就像下面这样:
不需要注入sqlSession
public class UserMapperImpl extends SqlSessionDaoSupport implements UserMapper{
public List<User> getUser() {
return getSqlSession().getMapper(UserMapper.class).getUser();
}
}
不需要注入了,这个也不要了
<!-- SqlSessionTemplate就是mybatis中的sqlSession-->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<!--只能使用构造器注入sqlSessionFactory,因为SqlSessionTemplate没有set方法-->
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>