Spring与Mybatis使用JavaConfig整合
2018-01-28 13:20
603 查看
pom.xml
AppConfig.java
@EnableTransactionManagement注解是为了增加事务的支持
UserMapper.java
UserMapper.xml
User.java
App.java
ps
1、可以使用注解@MapperScan代替
自动扫描,就不用一个个接口来添加了。
2、@MapperScan(“com.springdemo.bean”)注解和
可以相互替换。
3、例子是使用接口+xml来实现的,如果是直接使用接口,就不用使用sessionFactory.setMapperLocations方法来设置xml位置了。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.springdemo</groupId> <artifactId>spring01</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring01</name> <url>http://maven.apache.org</url> <properties> <spring.version>4.3.8.RELEASE</spring.version> <spring.security.version>4.2.3.RELEASE</spring.security.version> <junit.version>4.12</junit.version> <jdk.version>1.8</jdk.version> <jsp.version>2.2</jsp.version> <servlet.version>3.1.0</servlet.version> <jstl.version>1.2</jstl.version> <slf4j-version>1.7.25</slf4j-version> <hamcrest.core.version>1.3</hamcrest.core.version> <mockito.core.version>2.8.9</mockito.core.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>${hamcrest.core.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>${mockito.core.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-instrument</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-instrument-tomcat</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${spring.security.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${spring.security.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>${jsp.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.20</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j-version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> </dependencies> <build> <finalName>spring01</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> </configuration> </plugin> </plugins> </build> </project>
AppConfig.java
import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.mapper.MapperFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import com.alibaba.druid.pool.DruidDataSource; import com.springdemo.bean.UserMapper; @EnableTransactionManagement public class AppConfig1 { @Bean public DruidDataSource dataSource() { DruidDataSource ds = new DruidDataSource(); ds.setDriverClassName("com.mysql.cj.jdbc.Driver"); ds.setUrl("jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true"); ds.setUsername("root"); ds.setPassword("123456@#"); ds.setInitialSize(5); return ds; } @Bean public DataSourceTransactionManager dataSourceTransactionManager() { return new DataSourceTransactionManager(dataSource()); } @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } @Bean public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:com/springdemo/bean/UserMapper.xml")); sessionFactory.setTypeAliasesPackage("com.springdemo.bean"); return sessionFactory.getObject(); } @Bean public UserMapper userMapper(SqlSessionTemplate sqlSessionTemplate) throws Exception { return sqlSessionTemplate.getMapper(UserMapper.class); } }
@EnableTransactionManagement注解是为了增加事务的支持
UserMapper.java
import java.util.List; public interface UserMapper { public void insert(User user); public User selectUser(String userName); public List<User> selectAll(); }
UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.springdemo.bean.UserMapper"> <resultMap type="user" id="userList"><!-- type为返回列表元素的类全名或别名 --> <result column="username" property="username" /> <result column="password" property="password" /> <result column="enabled" property="enabled" /> </resultMap> <insert id="insert" parameterType="user"> insert into users(username, password,enabled) values(#{username}, #{password},#{enabled}) </insert> <select id="selectUser" parameterType="String" resultType="user"> SELECT * FROM users WHERE username = #{username} </select> <select id="selectAll" resultMap="userList" resultType="user"> SELECT * FROM users </select> </mapper>
User.java
public class User { private String username; private String password; private boolean enabled; 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; } public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } @Override public String toString() { return "User [username=" + username + ", password=" + password + ", enabled=" + enabled + "]"; } }
App.java
public class App { public static void main(String[] args) { @SuppressWarnings("resource") ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); UserMapper userMapper = (UserMapper) context.getBean(UserMapper.class); System.out.println(userMapper.selectAll()); } }
ps
1、可以使用注解@MapperScan代替
@Bean public UserMapper userMapper(SqlSessionTemplate sqlSessionTemplate) throws Exception { return sqlSessionTemplate.getMapper(UserMapper.class); }
自动扫描,就不用一个个接口来添加了。
2、@MapperScan(“com.springdemo.bean”)注解和
@Bean public MapperScannerConfigurer mapperScannerConfigurer(){ MapperScannerConfigurer mScannerConfigurer = new MapperScannerConfigurer(); mScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); mScannerConfigurer.setBasePackage("com.springdemo.bean"); return mScannerConfigurer; }
可以相互替换。
3、例子是使用接口+xml来实现的,如果是直接使用接口,就不用使用sessionFactory.setMapperLocations方法来设置xml位置了。
相关文章推荐
- 番外 02: Spring 之使用 JAVA 操作Mysql数据库(为何要用ORM)Spring整合 Mybatis前基础
- 番外 02: Spring 之使用 JAVA 操作Mysql数据库(为何要用ORM)Spring整合 Mybatis前基础
- 番外 02: Spring 之使用 JAVA 操作Mysql数据库(为何要用ORM)Spring整合 Mybatis前基础
- 使用spring整合mybatis时,sqlMapConfig.xml的分析
- 番外 02: Spring 之使用 JAVA 操作Mysql数据库(为何要用ORM)Spring整合 Mybatis前基础
- 番外 02: Spring 之使用 JAVA 操作Mysql数据库(为何要用ORM)Spring整合 Mybatis前基础
- 番外 02: Spring 之使用 JAVA 操作Mysql数据库(为何要用ORM)Spring整合 Mybatis前基础
- Java Web开发之Spring | SpringMvc | Mybatis | Hibernate整合、配置、使用
- Spring + Spring MVC + Mybatis + Swagger + javaConfig 整合项目 全注解方式
- 番外 02: Spring 之使用 JAVA 操作Mysql数据库(为何要用ORM)Spring整合 Mybatis前基础
- Java学习笔记32:Spring整合mybatis使用
- 番外 02: Spring 之使用 JAVA 操作Mysql数据库(为何要用ORM)Spring整合 Mybatis前基础
- 番外 02: Spring 之使用 JAVA 操作Mysql数据库(为何要用ORM)Spring整合 Mybatis前基础
- 番外 02: Spring 之使用 JAVA 操作Mysql数据库(为何要用ORM)Spring整合 Mybatis前基础
- 番外 02: Spring 之使用 JAVA 操作Mysql数据库(为何要用ORM)Spring整合 Mybatis前基础
- mybatis与spring的整合(使用sqlSession进行crud)
- Spring+SpringMVC+mybatis+easyui整合-----注解方式的mybatis的使用
- Spring+SpringMVC+mybatis+easyui整合实例----使用mybatis拦截器分页
- 【SSM框架 SSM项目源码 SSM源码 下载】java框架整合Springmvc+mybatis+shiro+bootstrap
- Java知识总结---整合SpringMVC+Mybatis+Spring(二)