001package org.lanyonm.playground.config; 002 003import java.util.Date; 004 005import javax.sql.DataSource; 006 007import org.mybatis.spring.SqlSessionFactoryBean; 008import org.mybatis.spring.annotation.MapperScan; 009import org.springframework.context.annotation.Bean; 010import org.springframework.context.annotation.Configuration; 011import org.springframework.jdbc.core.JdbcTemplate; 012import org.springframework.jdbc.datasource.DataSourceTransactionManager; 013import org.springframework.jdbc.datasource.SimpleDriverDataSource; 014 015/** 016 * @author lanyonm 017 */ 018@Configuration 019@MapperScan("org.lanyonm.playground.persistence") 020public class DataConfig { 021 022 @Bean 023 public DataSource dataSource() { 024 SimpleDriverDataSource dataSource = new SimpleDriverDataSource(); 025 dataSource.setDriverClass(org.h2.Driver.class); 026 dataSource.setUsername("sa"); 027 dataSource.setUrl("jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"); 028 dataSource.setPassword(""); 029 030 // populate some data 031 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 032 System.out.println("Creating tables"); 033 jdbcTemplate.execute("drop table users if exists"); 034 jdbcTemplate.execute("create table users(id serial, firstName varchar(255), lastName varchar(255), email varchar(255))"); 035 jdbcTemplate.update("INSERT INTO users(firstName, lastName, email) values (?,?,?)", "Mike", "Lanyon", "lanyonm@gmail.com"); 036 jdbcTemplate.execute("drop table todos if exists"); 037 jdbcTemplate.execute("create table todos(id serial, title varchar(255), dateCreated date, dateModified date)"); 038 jdbcTemplate.update("INSERT INTO todos(title, dateCreated) values (?,?)", "first todo", new Date()); 039 040 return dataSource; 041 } 042 043 @Bean 044 public DataSourceTransactionManager transactionManager() { 045 return new DataSourceTransactionManager(dataSource()); 046 } 047 048 @Bean 049 public SqlSessionFactoryBean sqlSessionFactory() throws Exception { 050 SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); 051 sessionFactory.setDataSource(dataSource()); 052 sessionFactory.setTypeAliasesPackage("org.lanyonm.playground.domain"); 053 return sessionFactory; 054 } 055}