基于Spring4.x 搭建 Spring MVC + MyBatis

此次为大家分享 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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值