spring mybatis 整合配置文件
mybatis配置文件 大部分配置放到了spring配置文件中
<configuration>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<typeAliases>
<package name="com.tv189.entity"/>
</typeAliases>
<!--1.配置数据源
2.指定mapper映射文件-->
</configuration>
spring 配置文件
<!--配置数据源 以前在mybatis.xml中的操作-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="username" value="root" />
<property name="password" value="123456" />
<property name="url" value="jdbc:mysql://localhost:3301/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8" />
</bean>
<!--声明sqlSessionFactory与SQLSession 都是为了简化代码
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
-->
<!--声明sqlSessionFactory 指定mybatis的配置文件 以及mapper映射文件(以前在mybatis中)-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
<property name="mapperLocations" value="classpath:com/tv189/mapper/*.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<!--使用了SQLSessionTemplate 创建SqlSessionTemplate的bean 需要声明sqlSessionTemplate 并通过构造方法注入sqlSessionFactory
然后再实现类中声明userMapperImp 并设置get方法 然后再spring中注入-->
<bean id="userMapperImp" class="com.tv189.service.UserServiceImp">
<property name="sqlSession" ref="sqlSession" />
</bean>
<!--使用SqlSessionDaoSupport 免去了创建SqlSessionTemplate 在实现类中不用声明sqlSessionTemplate和get方法 但是还是需要在实现类中注入sqlSessionFactory-->
<bean id="userMapperImp2" class="com.tv189.mapper.UserMapperImp2">
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
mapper接口
public interface UserMapper {
/**
* 查询用户
* @param user
* @return
*/
List<User> selectUser(User user);
/**
* 新增用户
* @param user
* @return int
*/
int addUser(User user);
/**
* 修改用户
* @param user
* @return int
*/
int updateUser(User user);
}
springIOC不能注入接口
所以还需要写实现类 之后配置mapper接口扫描包动态实现mapper接口 注入到容器中,就不用再手写mapper接口实现类了
mapper接口实现类1
使用SQLSessionTemplate的方式获取SQLSession
public class UserMapperImp implements UserMapper {
private SqlSessionTemplate sqlSession;
public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession;
}
@Override
public List<User> selectUser(User user) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
return mapper.selectUser(user);
}
@Override
public int addUser(User user) {
return 0;
}
@Override
public int updateUser(User user) {
return 0;
}
}
mapper接口实现类2
使用SqlSessionDaoSupport获取SqlSession
public class UserMapperImp2 extends SqlSessionDaoSupport implements UserMapper {
@Override
public List<User> selectUser(User user) {
UserMapper mapper = getSqlSession().getMapper(UserMapper.class);
return mapper.selectUser(user);
}
@Override
public int addUser(User user) {
UserMapper mapper = getSqlSession().getMapper(UserMapper.class);
return mapper.addUser(user);
}
@Override
public int updateUser(User user) {
UserMapper mapper = getSqlSession().getMapper(UserMapper.class);
return mapper.updateUser(user);
}
}
spring与mybatis没有结合时测试方法
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sessionFactory.openSession(true);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
List<User> users = mapper.selectUser(user);
System.out.println(users);
} catch (IOException e) {
e.printStackTrace();
}
spring与mybatis结合之后的测试方法
//使用sqlSessionTemplate
@Test
public void testSelect2(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapperImp userMapperImp = (UserMapperImp) context.getBean("userMapperImp");
System.out.println(userMapperImp.selectUser(new User()));
}
//使用sqlSessionDaoSupport
@Test
public void testSelect3(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userMapperImp = (UserMapperImp2)context.getBean("userMapperImp2");
System.out.println(userMapperImp.selectUser(new User()));
}

浙公网安备 33010602011771号