求,SpringMVC+MyBatis免xml的纯java注解配置方式?

不想做伸手党,这次实在没办法;
新项目需要用到mybatis,之前公司一直用springMvc+hibernate,
都是用一个WebApplicationInitializer实现类+WebMvcConfiguration实现类
用纯注解方式配置。
然而自己只会用xml配置mybatis,找得到注解写mybatis的sql语句,
但实在找不到SpringMVC+MyBatis的配置注解,百度的净是些挂羊头卖狗肉的
xml配置,
只能求助于各位道友了?

6个回答

 public class MybatisConfiguration {
    public Configuration mybatisConfig() {
        Configuration configuration = new Configuration();

        configuration.setCacheEnabled(true);
        configuration.setLazyLoadingEnabled(true);
        configuration.setAggressiveLazyLoading(true);
        configuration.setMultipleResultSetsEnabled(true);
        configuration.setUseColumnLabel(true);
        configuration.setUseGeneratedKeys(false);
        configuration.setAutoMappingBehavior(AutoMappingBehavior.PARTIAL);
        configuration.setDefaultExecutorType(ExecutorType.SIMPLE);
        configuration.setMapUnderscoreToCamelCase(true);
        configuration.setLocalCacheScope(LocalCacheScope.SESSION);
        configuration.setJdbcTypeForNull(JdbcType.NULL);

        configuration.getTypeAliasRegistry().registerAlias("Page", Page.class);

//      PageHelper pager = new PageHelper();
        PageInterceptor pageInterceptor = new PageInterceptor();

        Properties p = new Properties();
        p.put("helperDialect", "mysql");
        p.put("offsetAsPageNum", "true");
        p.put("rowBoundsWithCount", "true");
        p.put("pageSizeZero", "true");
        p.put("reasonable", "true");

        pageInterceptor.setProperties(p);
        configuration.addInterceptor(pageInterceptor);

        return configuration;

    }
}

/** 
 * ClassName: DataSourceConfiguration <br/> 
 * Function: TODO ADD FUNCTION. <br/> 
 * Reason: TODO ADD REASON(可选). <br/> 
 * date: 2016年4月7日 下午1:50:50 <br/> 
 * 
 * @author zengjing
 * @version  
 * @since JDK 1.7 
 */
@Configuration
@MapperScan(basePackages={"com.changan.anywhere.showcase"}, annotationClass = MyBatisDao.class)
public class DataSourceConfiguration implements TransactionManagementConfigurer {

    @Value("${spring.datasource.driverClassName}")
    private String driverClassName;

    @Value("${spring.datasource.url}")
    private String url;

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    private static Logger log = LoggerFactory.getLogger(DataSourceConfiguration.class);

    //@ConfigurationProperties(prefix="spring.datasource")
    public DataSource datasource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driverClassName);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);

        try {
            druidDataSource.setFilters("stat, wall");
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return druidDataSource;
    }

    @Bean(name = "dynamicDataSource")
    public DynamicDataSource dynamicDataSource() {
        DynamicDataSource dynamicDataSource = new DynamicDataSource();
        dynamicDataSource.setMasterDataSource(datasource());

        return dynamicDataSource;
    }

    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
        log.info("sqlSessionFactory");

        SqlSessionFactoryBean sessionBean = new SqlSessionFactoryBean();
        sessionBean.setDataSource(dynamicDataSource());
        sessionBean.setTypeAliasesPackage("com.changan.anywhere.showcase");
        sessionBean.setTypeAliasesSuperType(BaseEntity.class);

//      SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sessionBean.setMapperLocations(resolver.getResources("classpath:/mappings/*.xml"));

//      SqlSessionFactory sessionFactory = builder.build(new MybatisConfiguration().mybatisConfig());
        sessionBean.setConfiguration(new MybatisConfiguration().mybatisConfig());
        SqlSessionFactory sessionFactory = sessionBean.getObject();

        return sessionFactory;

    }

    @Bean(name = "transactionManager")
    public DataSourceTransactionManager transactionManager() {
        DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
        transactionManager.setDataSource(dynamicDataSource());

        return transactionManager;
    }

    @Bean
    @Override
    public PlatformTransactionManager annotationDrivenTransactionManager() {
        return transactionManager();
    }

}
sun1021873926
夕阳雨晴 能用就行,主要是提供一些思路,至于能不能用,有时还要看提问者的个人能力和回答者知识体系的契合度。
2 年多之前 回复
sin_404
sin_404 回复夕阳雨晴: 忘了采纳了,这个datasource测试确实能用
2 年多之前 回复
sun1021873926
夕阳雨晴 你值得拥抱。
2 年多之前 回复
sin_404
sin_404 看的不是很明白,已经投入springboot的怀抱了
2 年多之前 回复
sun1021873926
夕阳雨晴 将其中动态数据源相关的信息剔除就好。
2 年多之前 回复
qq_35728177
Tsui丶 回复sin_404: 得看错了
2 年多之前 回复
sin_404
sin_404 兄弟,我需要的是非xml的java注解!!
2 年多之前 回复

用纯注解方式,你自己要写很多代码,比如扫描注解之类的,所以还是会配置少许的。

sin_404
sin_404 扫描和注解用@ComponentScan@EnableWebMvc都是可以实现的,我用hibernate可以除了log4j2找不到其他.xml
2 年多之前 回复

这篇文章是基于Spring boot的纯注解方式引入mybatis,你可以参考哈,原理应该都差不多吧。
http://blog.csdn.net/sun1021873926/article/details/75138982

sin_404
sin_404 sql的查询确实使用注解写的,但配置方式用的还是xml
2 年多之前 回复
sin_404
sin_404 这只是一个查询sql的拓展配置
2 年多之前 回复

这个好评很高,,可以试试:
http://blog.csdn.net/yakson/article/details/44832967

sin_404
sin_404 这个还是靠xml,不是我需要的
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问