详解环境搭建SSM

1.概述:

SSM即为spring 4 +spring mvc +mybatis 3.4.6

推荐使用maven或者gradle 来配置 下面给出maven配置方式

2.项目结构:

新建web项目

详解环境搭建SSM_第1张图片

这里要特别说一下:如果你安装eclipse spring插件可以利用插件来检查多次依赖包,没有安装插件的推荐安装

spring elements>>beans>>显示了你用的标签,过去你需要记忆方式,或者说循规蹈矩的排除bean,现在直接使用这个插件,可以看到你注解标签下拥有的bean数,可以很好解决问题

 详解环境搭建SSM_第2张图片

3.pom文件

 1 <project xmlns="http://maven.apache.org/POM/4.0.0"
 2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0modelVersion>
 5     <groupId>com.gitee.dgwcodegroupId>
 6     <artifactId>mybatis06_SSMartifactId>
 7     <version>0.0.1-SNAPSHOTversion>
 8 
 9     <dependencies>
10         <dependency>
11             <groupId>org.slf4jgroupId>
12             <artifactId>slf4j-apiartifactId>
13             <version>1.7.25version>
14         dependency>
15         <dependency>
16             <groupId>org.slf4jgroupId>
17             <artifactId>slf4j-log4j12artifactId>
18             <version>1.7.25version>
19             <scope>testscope>
20         dependency>
21 
22         <dependency>
23             <groupId>javax.servletgroupId>
24             <artifactId>jstlartifactId>
25             <version>1.2version>
26         dependency>
27 
28         
29         <dependency>
30             <groupId>com.mchangegroupId>
31             <artifactId>c3p0artifactId>
32             <version>0.9.5.2version>
33         dependency>
34         <dependency>
35             <groupId>mysqlgroupId>
36             <artifactId>mysql-connector-javaartifactId>
37             <version>5.1.39version>
38         dependency>
39         
40         <dependency>
41             <groupId>org.mybatisgroupId>
42             <artifactId>mybatisartifactId>
43             <version>3.4.6version>
44         dependency>
45         <dependency>
46             <groupId>org.mybatisgroupId>
47             <artifactId>mybatis-springartifactId>
48             <version>1.3.2version>
49         dependency>
50         
51         <dependency>
52             <groupId>org.springframeworkgroupId>
53             <artifactId>spring-jdbcartifactId>
54             <version>4.3.9.RELEASEversion>
55         dependency>
56 
57         <dependency>
58             <groupId>org.springframeworkgroupId>
59             <artifactId>spring-contextartifactId>
60             <version>4.3.9.RELEASEversion>
61         dependency>
62         <dependency>
63             <groupId>org.springframeworkgroupId>
64             <artifactId>spring-webartifactId>
65             <version>4.3.9.RELEASEversion>
66         dependency>
67         <dependency>
68             <groupId>org.springframeworkgroupId>
69             <artifactId>spring-webmvcartifactId>
70             <version>4.3.9.RELEASEversion>
71         dependency>
72         <dependency>
73             <groupId>javax.servletgroupId>
74             <artifactId>javax.servlet-apiartifactId>
75             <version>4.0.0-b07version>
76             <scope>providedscope>
77         dependency>
78         <dependency>
79             <groupId>javax.servlet.jspgroupId>
80             <artifactId>jsp-apiartifactId>
81             <version>2.2version>
82             <scope>providedscope>
83         dependency>
84     dependencies>
85 project>

 

4.application

 1 xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:tx="http://www.springframework.org/schema/tx"
 5     xmlns:context="http://www.springframework.org/schema/context"
 6     xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
 7     xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
 8         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
 9         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
10         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
11 
12         
13     <context:component-scan base-package="com.gitee.dgwcode">
14         <context:exclude-filter type="annotation"
15             expression="org.springframework.stereotype.Controller" />
16             <context:exclude-filter type="annotation"
17             expression="org.springframework.web.bind.annotation.ControllerAdvice" />
18     context:component-scan>
19     
20     
21     
22     <context:property-placeholder location="classpath:dbconfig.properties" />
23     <context:property-placeholder location="classpath:dbconfig.properties" />
24     
25     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
26         <property name="jdbcUrl" value="${jdbc.url}">property>
27         <property name="driverClass" value="${jdbc.driver}">property>
28         <property name="user" value="${jdbc.username}">property>
29         <property name="password" value="${jdbc.password}">property>
30         <property name="initialPoolSize" value="10">property>
31         <property name="maxIdleTime" value="30">property>
32         <property name="maxPoolSize" value="100">property>
33         <property name="minPoolSize" value="10">property>
34     bean>
35     
36     
37     <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
38         <property name="dataSource" ref="dataSource">property>
39     bean>
40 
41     
42     <tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
43     
44     
45     <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
46         <property name="dataSource" ref="dataSource">property>
47         
48         <property name="configLocation" value="classpath:mybatis-cfg.xml">property>
49         
50         <property name="mapperLocations" value="classpath*:mybatis/mapper/*.xml">property>
51     bean>
52     
53     
57     
58     
61      <mybatis-spring:scan base-package="com.gitee.dgwcode.mapper"/> 
62     
65 
66 beans>

 

5:spring mvc .xml

这里你也可以选择在spring mvc 文件中配置事物,数据源,计划等

 1 xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:tx="http://www.springframework.org/schema/tx"
 5     xmlns:mvc="http://www.springframework.org/schema/mvc"
 6     xmlns:context="http://www.springframework.org/schema/context"
 7     xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
 8         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
 9         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
10         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
11 
12     <context:component-scan
13         base-package="com.gitee.dgwcode" use-default-filters="false">
14         <context:include-filter type="annotation"
15             expression="org.springframework.stereotype.Controller" />
16         <context:include-filter type="annotation"
17             expression="org.springframework.web.bind.annotation.ControllerAdvice" />
18     context:component-scan>
19 
20     <bean
21         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
22         <property name="prefix" value="/view/">property>
23         <property name="suffix" value=".jsp">property>
24     bean>
25 
26     <mvc:annotation-driven>mvc:annotation-driven>
27     <mvc:default-servlet-handler />
28 
29 
30 beans>

 

 

6:mybaits

SqlSessionFactoryBean 在sprinig代替了 SqlSessionFactoryBeanBuilde 所以原来的配置文件完全可以在spring的配置文件中进行,但是官方解释 配置属性是不完全的,那么你这里就要考虑是不是你要最基本的mybatis功能,还是说你要高度定制你自己的mybatis的各种

属性,所以你最好是保留这个配置文件

注意:我这个配置删除了一些无关配置,当前spring-mybat插件runing的时候也会忽略那么不需要的标签

 1 xml version="1.0" encoding="UTF-8" ?>
 2 DOCTYPE configuration
 3     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4     "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 
 6 <configuration>
 7 
 8     
 9     <settings>
10         <setting name="logImpl" value="LOG4J" />
11         
12         <setting name="mapUnderscoreToCamelCase" value="true" />
13         
14         
15         
16         <setting name="lazyLoadingEnabled" value="false" />
17         <setting name="cacheEnabled" value="true"/>
18     settings>
19 
20     
22     <typeAliases>
23     typeAliases>
24 
25     
26     <typeHandlers>
27         
28     typeHandlers>
29 
30     
31     
33 
34 
35     
36     <databaseIdProvider type="DB_VENDOR">
37         <property name="MySQL" value="mysql" />
38         
40     databaseIdProvider>
41 
42 configuration>

 

 

7:code文件

这里不贴出代码文件,其实就是实现一个最基本的crud,类如下图。

详解环境搭建SSM_第3张图片

 

 8:要说明的问题:

 

8.1:可能你已经习惯了Hihernate那套session使用方式,所以这里给出配置方式

在mybatis中对应的sqlSession,下面这段代码应该非常属性:

1 private SqlSessionFactory sqlsession;
2     
3     @Before
4     public void setUp() throws IOException {
5         String path="mybatis.cfg.xml";
6         InputStream stream = Resources.getResourceAsStream(path);
7         sqlsession= new SqlSessionFactoryBuilder().build(stream);
8     }

 

而对应的spring整合中,你只需要保证创建sqlSessionfactoryBean对象

1 
2     class="org.mybatis.spring.SqlSessionFactoryBean">
3         
4         
5         
6         
7         
8     

 

再想到hibernate 对应的factory,就有下面的注入方式

 1 public class UserDaoImpl implements UserDao {
 2 
 3   private SqlSession sqlSession;
 4 
 5   public void setSqlSession(SqlSession sqlSession) {
 6     this.sqlSession = sqlSession;
 7   }
 8 
 9   public User getUser(String userId) {
10     return (User) sqlSession.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);
11   }
12 }

 

 保证文件配置了SqlSessionTemplate

1  <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
2         <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactoryBean">constructor-arg>
3         <constructor-arg name="executorType" value="BATCH">constructor-arg>
4     bean>

 

 8.2:hibernateDaoSupport对应支持

源码:

 1 public abstract class SqlSessionDaoSupport extends DaoSupport {
 2 
 3   private SqlSession sqlSession;
 4 
 5   private boolean externalSqlSession;
 6 
 7   public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
 8     if (!this.externalSqlSession) {
 9       this.sqlSession = new SqlSessionTemplate(sqlSessionFactory);
10     }
11   }
12 
13   public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
14     this.sqlSession = sqlSessionTemplate;
15     this.externalSqlSession = true;
16   }
17 
18   /**
19    * Users should use this method to get a SqlSession to call its statement methods
20    * This is SqlSession is managed by spring. Users should not commit/rollback/close it
21    * because it will be automatically done.
22    *
23    * @return Spring managed thread safe SqlSession
24    */
25   public SqlSession getSqlSession() {
26     return this.sqlSession;
27   }
28 
29   /**
30    * {@inheritDoc}
31    */
32   @Override
33   protected void checkDaoConfig() {
34     notNull(this.sqlSession, "Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required");
35   }
36 
37 }

 

 

sqlSeesionDaoSupport需要sqlseesiontemplate 或者sqlsessionfactoryBean的直接注入,所以:

 1 @Repository
 2 public class EmployeeDao extends SqlSessionDaoSupport {
 3     
 4     
 5     @Autowired
 6     public void setSqlSession(SqlSessionTemplate sqlSession) {
 7         super.setSqlSessionTemplate(sqlSession);
 8     }
 9     public List getEmps(){
10         SqlSession session = getSqlSession();
11         EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
12         List emps = mapper.getEmps();
13         return emps;
14     }
15 
16 }

 

1 public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
2   public User getUser(String userId) {
3     return (User) getSqlSession().selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);
4   }
5 }

 

这里你要确保你得appliacationContext.xml中具有sqlsessiontemplate才能保证注入:

其实你发现没有,EmployeeDao这么复杂,实际上你配置MapperScannerConfigurer 他内步完成的也是这些操作

 

 1 @Service
 2 public class EmployeeService {
 3     
 4     @Autowired
 5     private EmployeeMapper employeeMapper;
 6     
 7     @Autowired
 8     EmployeeDao employeeDao;
 9     
10     /*@Autowired
11     private SqlSession sqlSession;*/
12     
13     public List getEmps() {
14         //List selectOne = sqlSession.selectOne("com.gitee.dgwcode.mapper.EmployeeMapper.getEmps");
15         //EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
16         //List emps = employeeDao.getEmps();
17         return employeeMapper.getEmps();
18     }
19 
20 }

 

转载于:https://www.cnblogs.com/dgwblog/p/9587858.html

你可能感兴趣的:(详解环境搭建SSM)