MyBatis-Spring 使用总结

说明:基于 Java-Config来配置。

不是通过mybatis的SqlSessionFactoryBuilder来创建SqlSessionFactory,而是通过mybatis-Spring的SqlSessionFactoryBean来获取。

1、Anyway,首先要有一个DataSource。

需要注意,事务管理器也在这里注册。(mybatis-spring插件会自动调用该事务管理器)

    @Bean(name = "transactionManager")
    public DataSourceTransactionManager dataSourceTransactionManager() {
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
        dataSourceTransactionManager.setDataSource(this.dataSource());
        return dataSourceTransactionManager;
    }

2、然后,注册SqlSessionFactoryBean。如下:

    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(this.dataSource());
        // sqlSessionFactoryBean.setConfigLocation(new
        // ClassPathResource("mybatis-config.xml"));
        // Resource[] mapperLocations = new Resource[] { new
        // ClassPathResource("com.expert.dao") }; // 这个和@MapperScan冲突吗?这个设置有问题。
        // sqlSessionFactoryBean.setMapperLocations(mapperLocations);//<mappers>
        sqlSessionFactoryBean.setTypeAliasesPackage(PojoBasePackage);
        // sqlSessionFactoryBean.setCache(cache);
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBean.getObject();
        // It can be specified a Configuration instance directly without MyBatis
        // XML configuration file.
        sqlSessionFactory.getConfiguration().setMapUnderscoreToCamelCase(true);// 开启驼峰映射
        sqlSessionFactory.getConfiguration().setCacheEnabled(true);
        sqlSessionFactory.getConfiguration().setLazyLoadingEnabled(true);
        sqlSessionFactory.getConfiguration().setAggressiveLazyLoading(false);
        // Class<Object> logImpl =
        // sqlSessionFactory.getConfiguration().getTypeAliasRegistry().resolveAlias("SLF4J");
        sqlSessionFactory.getConfiguration().setLogImpl(Slf4jImpl.class);// logImpl
        sqlSessionFactory.getConfiguration().setLogPrefix("###SPRING_BOOT###MYBATIS###");
        sqlSessionFactory.getConfiguration().setDefaultExecutorType(ExecutorType.REUSE);
        sqlSessionFactory.getConfiguration().setUseGeneratedKeys(true);
        return sqlSessionFactory;
    }

这里还设置了一堆参数。需要注意的是,

①设置了 TypeAliasesPackage 。

②设置了 Configuration 。

③mybatis-spring会自动创建 Configuration 对象,所以通过 sqlSessionFactory.getConfiguration() 即可获取并进行设置。

3、再注册一个 SqlSessionTemplate,这是mybatis-spring的核心。

    @Bean
    @Scope(BeanDefinition.SCOPE_PROTOTYPE) // 多例?
    public SqlSessionTemplate sqlSessionTemplate() throws Exception {
        return new SqlSessionTemplate(this.sqlSessionFactory());
    }

4、设置mapper的位置,有两种方法。

①推荐这种,简单。

@Configuration
@MapperScan(basePackages = { "com.expert.dao" })
public class DruidDataSourceConfig{
    // ...
}

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setBasePackage(DaoBasePackage);
        mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
        return mapperScannerConfigurer;
    }

至此,已可以成功运行。

但是,还有更简单的方法,那就是 MyBatis-Spring-Boot-Starter 。使用该Starter时,会自动查找DataSource,并自动创建SqlSessionFactoryBean 和 SqlSessionTemplate。所以,只需要设置mapper所在的位置和别名所在的包即可。

见 MyBatis-Spring-Boot 使用总结

时间: 2024-10-12 18:17:09

MyBatis-Spring 使用总结的相关文章

springMVC+MyBatis+Spring 整合(3)

spring mvc 与mybatis 的整合. 加入配置文件: spring-mybaits.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xm

springMVC+MyBatis+Spring 整合(4) ---解决Spring MVC 对AOP不起作用的问题

解决Spring MVC 对AOP不起作用的问题 分类: SpringMVC3x+Spring3x+MyBatis3x myibaits spring J2EE2013-11-21 11:22 640人阅读 评论(1) 收藏 举报 用的是 SSM3的框架 Spring MVC 3.1 + Spring 3.1 + Mybatis3.1第一种情况:Spring MVC 和 Spring 整合的时候,SpringMVC的springmvc.xml文件中 配置扫描包,不要包含 service的注解,S

mybatis spring maven

maven版本:3.3.9  解压即可使用 spring版本:4.3.9  通过maven进行管理下载 mybatis版本:3.4.4 通过maven进行管理下载 mysql版本:5.7  connector也是通过maven进行下载 首先,使用maven一定要网速好一点,不然在线下载jar包会很慢,其次,关于仓库的问题,最好换成国内的阿里云的仓库,下载会更快. 具体为,修改maven的E:\Runtime\apache-maven-3.3.9\conf下的settings.xml文件: 在 <

MyBatis Spring整合配置映射接口类与映射xml文件

Spring整合MyBatis使用到了mybatis-spring,在配置mybatis映射文件的时候,一般会使用MapperScannerConfigurer,MapperScannerConfigurer会自动扫描basePackage指定的包,找到映射接口类和映射XML文件,并进行注入.配置如下: [html] view plain copy <!-- 数据源 --> <bean id="dataSource" class="com.mchange.v

Mybatis异常:java.lang.ClassNotFoundException: org.mybatis.spring.SqlSessionFactoryBean

问题描述: 一月 15, 2014 3:43:13 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh信息: Refreshing org[email protected]a530461: startup date [Wed Jan 15 15:43:13 CST 2014]; root of context hierarchy一月 15, 2014 3:43:13 下午 org.spr

Maven搭建Mybatis+Spring+ehcache细节

1.创建Maven工程 1.1.Fill-->New Maven Project-->Next-->maven-archetype-webapp-->Next-->输入group id和artiface id点击finish完成,这里group id和artiface id就是标识项目唯一坐标的作用,这里不做介绍,然后把工程目录调整下,这样就是个标准的maven工程了.   1.2.编写pom文件,有了maven真的极大的方便了我们构建项目,这里maven帮我们把编写在pom

MyBatis详解 与配置MyBatis+Spring+MySql

MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型.Map 接口和POJO 到数据库记录.相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现.需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包).mybatis-spring-1.0.0.jar

Springmvc + mybatis + spring 配置 spring事务处理

今天配置了半天,发现,事物不起效果,主要出现如下错误: org.mybatis.spring.transaction.SpringManagedTransaction] - [JDBC Connection [[email protected]] will not be managed by Spring SqlSession [[email protected]] was not registered for synchronization because synchronization is

2015/5/3~springMVC+mybatis+spring整合

一.准备工作 1.概述 springMVC+mybatis+spring+MySQL+log4j+maven 2.新建maven项目,现在web-app模版 新建项目后,可能个别目录会丢失,需要手动添加,整体目录结构如下所示: 3.通过maven管理依赖,仓库地址如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan

自写开发平台ssmy_m(与代码生成) strust2 mybatis spring maven jquery

自己写的开发平台ssmy_m 与代码生成 ,strust2 mybatis spring maven jquery jqgrid jqueryui 有问题请留言,或QQ110146324 SVN上的代码基础功能已经都有了.美工没弄,有需要的自己改吧. 在/ssmy_m/src/main/webapp/common/include_com.jsp里引用.否则代码生成会有影响 开发平台 svn: https://m2.svnspot.com/lpy3654321.ssmy_m/ 开发平台页面 : 代