此次为大家分享 Spring MVC + MyBatis 环境搭建。
好我们迅速开始:
还是使用上篇讲述的这三个类来完成:
1。ApplicationBoot //配置DispatcherServlet信息的类
2。RootConfig //配置 root applicationcontext 信息
3。MvcConfig //配置servlet applicationcontext 信息
MvcConfig 中不需要有太多变化 只需要去掉 OpenEntityManagerInViewInterceptor 这拦截器即可
我们来看一下 RootConfig 中的配置情况:
@Configuration
@EnableTransactionManagement
@ComponentScan({"com.mycompany.myapp.dao"
,"com.mycompany.myapp.service"})
public class RootConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer config = new PropertySourcesPlaceholderConfigurer();
String filePath = "META-INF/system-cnf-test.properties";
config.setLocation(
newClassPathResource(filePath,RootConfig.class.getClassLoader()));
return config;
}
/**
* 数据库配置
*/
@Bean
public DataSource dataSource(
@Value("${db.url}")String url,
@Value("${db.user}")String username,
@Value("${db.password}")String password,
@Value("${db.driver}")String driverClassName
){
DriverManagerDataSource dataSource = new DriverManagerDataSource(url, username, password);
dataSource.setDriverClassName(driverClassName);
return dataSource;
}
//定义 MyBatis 的 SessionFactory,需要配置 mybatis-config.xml配置文件的位置信息。
@Bean
public SqlSessionFactoryBean sqlSessionFactory(DataSource ds){
SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
factory.setDataSource(ds);
factory.setConfigLocation(new ClassPathResource("META-INF/mybatis-config.xml"));
return factory;
}
//用来配置,MyBatis 扫包范围,从而为我们创建Dao层的实现。
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer configurer = new MapperScannerConfigurer();
configurer.setBasePackage("com.mycompany.myapp.mapper");
//方法名即为BeanName
configurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
return configurer;
}
//用来在 MyBatis 环境中控制数据库事物的,使用即在你的service 方法上加 @Transactional 即可
@Bean
public DataSourceTransactionManager dataSourceTransactionManager(DataSource ds){
DataSourceTransactionManager tm = new DataSourceTransactionManager();
tm.setDataSource(ds);
return tm;
}
}
到这里 Spring 这边的配置就算完了,我们来看看,MyBatis这边的配置
首先是mybatis-config.xml
<configuration>
<!-- 实体类,简称 -设置别名,这样在mapp.xml的文件里面就可以使用简称,而不用使用全名 -->
<typeAliases>
<typeAlias alias="_User" type="com.mycompany.myapp.model._User"/>
</typeAliases>
<!-- 这里不写也可以,MyBatis 默认会在 你的mapper包下 找 和 mapper同名的xml文件
如:UserMapper.java 那么它默认会找UserMapper.xml,
但小编为了方便管理,就另放了一个地方 -->
<mappers>
<mapper resource="META-INF/mapper/UserMapper.xml"/>
</mappers>
</configuration>
那么就剩 单个 实体的文件了,我们就以UserMapper.xml 和 UserMapper.java 为例。
为_User 这个实体构建 mapper 接口
public interface UserMapper {
void create(_User user);
}
里面就一个 创建方法,然而我们并不要再为这个接口写实现类了,在UserMapper.xml 里面配置就好了
<mapper namespace="com.mycompany.myapp.mapper.UserMapper">
<!-- id 对于方法名, parameterType 对应参数,
后两个参数表示在数据库保存成功后,可以将id回填到 参数这个_User中-->
<insert id="create" parameterType="_User" useGeneratedKeys="true" keyProperty="id">
INSERT INTO _users (created_at,username,email,mobile_phone,password)
VALUES (#{createdAt},#{username},#{email},#{mobilePhone},#{password})
</insert>
</mapper>
好的到这里项目就差不多搭建完了,希望小编的分享,对您有帮助。
pom 片段
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.5</version>
</dependency>