导入pom相关的依赖。看博客最后 附录pom文件java
jdbc.driver=com.mysql.jdbc.Driver # 数据库地址 jdbc.url=jdbc:mysql://127.0.0.1:3306/springday01 # mysql帐号 jdbc.username=root # mysql密码 jdbc.password=root
create database springday01; use springday01; CREATE TABLE USER( uid VARCHAR(32) PRIMARY KEY, username VARCHAR(50), PASSWORD VARCHAR(32) )
package com.zqh.domain; import javax.persistence.Table; import java.io.Serializable; /** * @author 漫路 */ @Table(name = "user") public class User implements Serializable { private String uid; private String username; private String password; public User() { } public User(String uid, String username, String password) { this.uid = uid; this.username = username; this.password = password; } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
package com.zqh.dao; import com.zqh.domain.User; import tk.mybatis.mapper.common.Mapper; /** * @author 漫路 */ public interface UserMapper extends Mapper<User> { }
package com.zqh.service; import com.zqh.domain.User; /** * @author 漫路 */ public interface UserService { public User findByPrimaryKey(String uid); public void insertUser(User user); }
package com.zqh.service.impl; import com.zqh.dao.UserMapper; import com.zqh.domain.User; import com.zqh.service.UserService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; /** * @author 漫路 */ @Service @Transactional //开启事务支持 public class UserServiceImpl implements UserService { @Resource private UserMapper userMapper; public User findByPrimaryKey(String uid) { return userMapper.selectByPrimaryKey(uid); } public void insertUser(User user) { userMapper.insert(user); } }
1.配置注解 1.1 扫描注解包 1.2加载properties文件 1.3 开启注解事务支持 2.得到properties数据(实现类、@Value) 3.配置数据源DataSource 4.配置事务管理器(DataSourceTransactionManager)
package com.zqh.config; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import javax.annotation.Resource; import javax.sql.DataSource; /** * @author 漫路 */ @Configuration @ComponentScan(basePackages = {"com.zqh"}) @EnableTransactionManagement @PropertySource(value = "classpath:db.properties") public class SpringConfig { // 4.2.4版本 固定配置 @Bean public static PropertySourcesPlaceholderConfigurer create(){ return new PropertySourcesPlaceholderConfigurer(); } //读取数据库相关配置 @Value("${jdbc.driver}") private String driverClass; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; //数据源使用德鲁伊链接池 @Bean public DataSource dataSource(){ DruidDataSource ds = new DruidDataSource(); ds.setDriverClassName(driverClass); ds.setUrl(url); ds.setUsername(username); ds.setPassword(password); return ds; } // 开启事务管理器 @Bean @Resource public DataSourceTransactionManager txManager(DataSource dataSource){ return new DataSourceTransactionManager(dataSource); } }
1.配置session工厂,spring和MyBatis整合时,经过SqlSessionFactoryBean得到SqlSessionFactory SqlSessionFactoryBean只能加载mapper映射文件 注解开发须要加载Mapper类,故须要对mapper进行扫描 2.配置映射扫描器
package com.zqh.config; import com.github.pagehelper.PageHelper; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import tk.mybatis.spring.mapper.MapperScannerConfigurer; import javax.annotation.Resource; import javax.sql.DataSource; import java.util.Properties; /** * Spring整合MyBatis的配置类 * @author 漫路 */ // 声明 @Configuration public class MyBatisConfig { /** * 构建SessionFactory对象,SessionFactory能够建立Session对象,最后使用Session操做数据库 * * @param dataSource * @return * @throws Exception */ @Bean @Resource public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { // 1.经过工厂bean建立对象,最后须要调用 getObject()得到具体的对象 SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); // 1.1 设置数据源 factoryBean.setDataSource(dataSource); // 1.2 设置别名包扫描 factoryBean.setTypeAliasesPackage("com.zqh.domain"); // 1.3 全局配置:驼峰映射 org.apache.ibatis.session.Configuration config = new org.apache.ibatis.session.Configuration(); config.setMapUnderscoreToCamelCase(true); factoryBean.setConfiguration(config); // 2 插件配置 // 2.1 分页插件 PageHelper pageHelper = new PageHelper(); Properties pageProps = new Properties(); pageProps.setProperty("dialect", "mysql"); pageProps.setProperty("rowBoundsWithCount", "true"); pageHelper.setProperties(pageProps); factoryBean.setPlugins(new Interceptor[]{pageHelper}); // 3 经过工厂bean得到 sqlSessionFactory return factoryBean.getObject(); } /** * 扫描Dao的包,查找各类XxxMapper接口,建立好UserMapper等对象存入到IOC的容器中 * * @return */ @Bean public MapperScannerConfigurer mapperScanner() { MapperScannerConfigurer configurer = new MapperScannerConfigurer(); configurer.setBasePackage("com.zqh.dao"); return configurer; } }
package com.zqh; import com.zqh.config.MyBatisConfig; import com.zqh.config.SpringConfig; import com.zqh.domain.User; import com.zqh.service.UserService; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {SpringConfig.class, MyBatisConfig.class}) public class TestA { @Resource private UserService userService; @Test public void test01(){ User user = new User("u001","张三丰","123"); userService.insertUser(user); System.out.println("添加完毕"); } }
package com.zqh; import com.zqh.config.MyBatisConfig; import com.zqh.config.SpringConfig; import com.zqh.domain.User; import com.zqh.service.UserService; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class TestB { public static void main(String[] args) { //1.建立工厂,设置两个配置类 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class, MyBatisConfig.class); //2.从工厂获取须要的对象 UserService userService = applicationContext.getBean(UserService.class); //3.执行语句 User user = new User("u800","zhangsan","123"); userService.insertUser(user); System.out.println("添加完毕"); } }
<properties> <org.springframework.version>4.2.4.RELEASE</org.springframework.version> </properties> <dependencies> <!--spring core start--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${org.springframework.version}</version> </dependency> <!--spring core end--> <!--spring aop start--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${org.springframework.version}</version> </dependency> <!--spirng aop end--> <!--spring aspects start--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${org.springframework.version}</version> </dependency> <!--spring aspects end--> <!--spring instrumentation start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-instrument</artifactId> <version>${org.springframework.version}</version> </dependency> <!--spring instrumentation end--> <!--spring messaging start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-messaging</artifactId> <version>${org.springframework.version}</version> </dependency> <!--spring messaging end--> <!--spring data access start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${org.springframework.version}</version> </dependency> <!--spring data access end--> <!--spring web start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc-portlet</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework.version}</version> </dependency> <!--spring web end --> <!--spring test start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${org.springframework.version}</version> </dependency> <!--spring test end --> <!-- spring end --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>3.7.5</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency> </dependencies>