SpringMVC+Spring+mybatis+redis项目从零开始--Spring mybatis mysql配置实现

来源:互联网 发布:手机声音放大软件 编辑:程序博客网 时间:2024/06/08 02:21

转自:http://blog.csdn.net/a123demi/article/details/54616187

一.SSM项目-分布式项目结构搭建
二.SSM项目-Spring mybatis mysql配置实现
三.SSM项目-redis缓存策略和配置实现
四.SSM项目-Springmvc配置实现


二. SSM项目-Spring mybatis mysql配置实现

上一章我们把SSM项目结构已搭建(SSM框架web项目从零开始--分布式项目结构搭建)完毕,本章将实现Spring,mybatis,mysql等相关配置。

1.    外部架包依赖引入

外部依赖包引入可以根据相关包名从

网站:http://mvnrepository.com/

获取依赖引入语句结构。

SSM项目详细依赖包请见ssm-parent中的pom.xml文件。

1.1  spring框架依赖包引入

spring-context

spring-beans

spring-jdbc

spring aspects

spring-webmvc

 

1.2  spring-mybatis依赖包引入

mybatis

mybatis-spring

 

1.3  数据库依赖包引入

mysql-connector-java

druid

 

1.4  redis依赖包引入

jedis

 

1.5  web相关依赖包引入

jstl

servlet-api

jsp-api

Jackson-databind

 

1.6  其他日志和公共包依赖引入

slf4j-log4j12

junit

commons-langs

commons-io

 

2.    各项目间依赖关系以及架包引入

ssm-parent实现了所有外部依赖包引入

(1)ssm-commons 实现公共的组件,工具类等

(2)ssm-manager 实际业务管理工程,聚合工程,

其包含工程依赖(1)

                               (3)ssm-manager-pojo

                                   (4)ssm-manager-mapper 依赖(3)

                                   (5)ssm-manager-service  依赖(3,4)

                                   (6)ssm-manager-controller 依赖(3,5)

 

3.    Spring简单介绍

Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

控制反转——Spring通过一种称作控制反转(IoC)的技术促进了低耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoCJNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。

框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

MVC——Spring的作用是整合,但不仅仅限于整合,Spring框架可以被看做是一个企业解决方案级别的框架。客户端发送请求,服务器控制器(由DispatcherServlet实现的)完成请求的转发,控制器调用一个用于映射的类HandlerMapping,该类用于将请求映射到对应的处理器来处理请求。HandlerMapping将请求映射到对应的处理器Controller(相当于Action)在Spring当中如果写一些处理器组件,一般实现Controller接口,在Controller中就可以调用一些ServiceDAO来进行数据操作 ModelAndView用于存放从DAO中取出的数据,还可以存放响应视图的一些数据。如果想将处理结果返回给用户,那么在Spring框架中还提供一个视图组件ViewResolver,该组件根据Controller返回的标示,找到对应的视图,将响应response返回给用户。

所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。

--摘自百度百科

总结几点:

1)   spring是轻量级的,而且是开发源码的。

2)   spring有控制反转和依赖注入的特性,将类之间的主动关联转换为被动关联,实现的相互间的解耦,通过配置文件,简化了开发;

3)   aop面向切面编程,将系统核心业务与服务分离,实现了代码的解耦,通过切面实现全局调用,如日志,事务等;

4)   与其他框架能很好的集成,如mybatis,struts2,hibernate,redis等。

详情见官网:  http://spring.io/

4.    mybatis简单介绍

MyBatis是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis避免了几乎所有的 JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的 XML或注解,将接口和Java POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

详情见官网:http://www.mybatis.org/mybatis-3/zh/index.html

       mybatis相对hibernate优势

1)   mybatis是轻量级的,学习成本较低,易上手;

2)   mybatis是半自动化的,相关的sql需要手动实现;

mybatis工作原理:

5.    Spring,mybatis,mysql等配置实现

由于SSM项目中ssm-controller依赖所有模块,为了方便配置文件易于管理,一般将项目的配置文件统一放置于smm-controller目录文件。


 

 

5.1  applicationContext-service.xml配置

[java] view plain copy
  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:context="http://www.springframework.org/schema/context"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  6.        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">  
  7.    
  8.     <!-- 自动扫描service包 -->  
  9.     <context:component-scan base-package="com.ssm.manager.service"></context:component-scan>  
  10.    
  11.     <import resource="applicationContext-mapper.xml"/>  
  12.     <import resource="applicationContext-trans.xml"/>  
  13. </beans>  

5.2  applicationContext-mapper.xml配置

[java] view plain copy
  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:jdbc="http://www.springframework.org/schema/jdbc"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd  
  7.        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  8.        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">  
  9.      
  10.     <!-- 配置文件 -->  
  11.     <context:property-placeholder location="classpath:config/*.properties"/>  
  12.     <!-- 数据源 -->  
  13.     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"  
  14.        destroy-method="close">  
  15.        <property name="url" value="${jdbc.url}" />  
  16.        <property name="username" value="${jdbc.username}" />  
  17.        <property name="password" value="${jdbc.password}" />  
  18.        <property name="driverClassName" value="${jdbc.driver}" />  
  19.        <property name="maxActive" value="10" />  
  20.        <property name="minIdle" value="5" />  
  21.     </bean>  
  22.     <!-- 配置sqlsessionFactory -->  
  23.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  24.        <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"></property>  
  25.        <property name="dataSource" ref="dataSource"></property>  
  26.     </bean>  
  27.     <!-- 配置扫描包,加载mapper代理对象 -->  
  28.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  29.        <property name="basePackage" value="com.ssm.manager.mapper"></property>  
  30.     </bean>  
  31. </beans>  

5.3  applicationContext-trans.xml配置

[java] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
  7.     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd  
  8.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd  
  9.     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">  
  10.    
  11.     <!-- 事务管理器 -->  
  12.     <bean id="transactionManager"  
  13.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  14.        <!-- 数据源 -->  
  15.        <property name="dataSource" ref="dataSource" />  
  16.     </bean>  
  17.     <!-- 通知 -->  
  18.     <tx:advice id="txAdvice" transaction-manager="transactionManager">  
  19.        <tx:attributes>  
  20.            <!-- 传播行为 -->  
  21.            <tx:method name="save*" propagation="REQUIRED" />  
  22.            <tx:method name="insert*" propagation="REQUIRED" />  
  23.            <tx:method name="add*" propagation="REQUIRED" />  
  24.            <tx:method name="create*" propagation="REQUIRED" />  
  25.            <tx:method name="delete*" propagation="REQUIRED" />  
  26.            <tx:method name="update*" propagation="REQUIRED" />  
  27.            <tx:method name="find*" propagation="SUPPORTS" read-only="true" />  
  28.            <tx:method name="select*" propagation="SUPPORTS" read-only="true" />  
  29.            <tx:method name="get*" propagation="SUPPORTS" read-only="true" />  
  30.        </tx:attributes>  
  31.     </tx:advice>  
  32.     <!-- 切面 -->  
  33.     <aop:config>  
  34.        <aop:advisor advice-ref="txAdvice"  
  35.            pointcut="execution(* com.ssm.manager.service.*.*(..))" />  
  36.     </aop:config>  
  37. </beans>  



5.4  SqlMapConfig.xml

[java] view plain copy
  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. <configuration>  
  6. </configuration>  


5.5  db.properties配置文件

[java] view plain copy
  1. jdbc.driver=com.mysql.jdbc.Driver  
  2. jdbc.url=jdbc:mysql://192.168.44.128:3306/ssm?characterEncoding=utf-8  
  3. jdbc.username=root  
  4. jdbc.password=root  


6.    单元测试 

需求:数据库包含用户表t_user,查询所有用户

6.1  model定义实体

[java] view plain copy
  1. package com.ssm.manager.pojo;  
  2.    
  3. public class User {  
  4.     private int id;  
  5.     private String userName;  
  6.     private String password;  
  7.     public int getId() {  
  8.        return id;  
  9.     }  
  10.     public void setId(int id) {  
  11.        this.id = id;  
  12.     }  
  13.     public String getUserName() {  
  14.        return userName;  
  15.     }  
  16.     public void setUserName(String userName) {  
  17.        this.userName = userName;  
  18.     }  
  19.     public String getPassword() {  
  20.        return password;  
  21.     }  
  22.     public void setPassword(String password) {  
  23.        this.password = password;  
  24.     }  
  25.     @Override  
  26.     public String toString() {  
  27.        return "User [id=" + id + ", userName=" + userName + ", password="  
  28.               + password + "]";  
  29.     }  
  30.    
  31. }  


6.2  dao接口即mapper持久层 

[java] view plain copy
  1. --UserMapper接口  
  2. package com.ssm.manager.mapper;  
  3. import java.util.List;  
  4. import com.ssm.manager.pojo.User;  
  5. public interface UserMapper {  
  6.   public List<User> getUsers();  
  7. }  
  8. --UserMapper.xml配置文件  
  9.           <?xml version="1.0" encoding="UTF-8"?>  
  10. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"    
  11.     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">   
  12. <mapper namespace="com.ssm.manager.mapper.UserMapper">   
  13.     <resultMap id="UserMapper" type="com.ssm.manager.pojo.User">   
  14.         <id property="id" column="id" />   
  15.         <result property="userName" column="userName" />   
  16.         <result property="password" column="password" />   
  17.     </resultMap>   
  18.        
  19.     <select id="getUsers" resultMap="UserMapper">   
  20.         select id,userName,password from t_user       
  21.     </select>   
  22.        
  23. </mapper>   


6.3  service接口业务层

[java] view plain copy
  1. --UserService接口  
  2. package com.ssm.manager.service;  
  3. import java.util.List;  
  4. import com.ssm.manager.pojo.User;  
  5. public interface UserService {  
  6.        public List<User> getUsers();  
  7. }  
  8. --UserServiceImpl实现  
  9. package com.ssm.manager.service;  
  10. import java.util.List;  
  11. import org.springframework.beans.factory.annotation.Autowired;  
  12. import org.springframework.stereotype.Service;  
  13. import com.ssm.manager.mapper.UserMapper;  
  14. import com.ssm.manager.pojo.User;  
  15. @Service  
  16. public class UserServiceImpl implements UserService {  
  17.        @Autowired  
  18.        private UserMapper userMapper;  
  19.        @Override  
  20.        public List<User> getUsers() {  
  21.               return userMapper.getUsers();  
  22.        }  
  23. }  


6.4  单元测试用例

[java] view plain copy
  1. package com.ssm.test;  
  2. import java.util.List;  
  3. import org.junit.Before;  
  4. import org.junit.Test;  
  5. import org.springframework.context.ApplicationContext;  
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  7. import com.ssm.manager.pojo.User;  
  8. import com.ssm.manager.service.UserService;  
  9. public class ssmTest {  
  10.        private ApplicationContext ctx = null;  
  11.        private UserService userService = null;  
  12.        @Before  
  13.        public void init()  
  14.        {  
  15.               ctx = new ClassPathXmlApplicationContext("spring/applicationContext-service.xml");  
  16.               userService = ctx.getBean(UserService.class);  
  17.        }  
  18.        @Test     
  19.        public void testGetUsers(){  
  20.               List<User> users = userService.getUsers();  
  21.               System.out.println(users);  
  22.        }  
  23. }  


6.5  测试目录结构 


7.    错误问题汇总

问题:在添加完pom.xml文件相关依赖后,通过mvn install编译加载依赖,出现以下错误:


解决:设置Default VMarguments:

-Dmaven.multiModuleProjectDirectory=$M2_HOME


8.    总结

本章我们讲解了SSM项目中配置各项目pom文件、spring的事务、springaop、mybatis等配置。

代码路径:http://download.csdn.net/detail/a123demi/9741430


三.  SSM项目-redis缓存策略和配置实现

四.  SSM项目-Springmvc配置实现


阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 节食减肥胃疼怎么办呢 减肥不吃饭胃疼怎么办 过度节食伤了胃怎么办 3岁宝宝啥也不吃怎么办 1岁多宝宝不吃饭怎么办 胃口吃辣的难受怎么办 空腹吃辣椒胃疼怎么办 吃东西辣的胃口疼怎么办 吃辣的东西胃烧怎么办 吃母乳的宝宝不爱喝水怎么办 三个月宝宝不肯吃奶粉怎么办 三个月宝宝不肯喝奶粉怎么办 三个月的宝宝不肯喝奶粉怎么办 三个月的宝宝不肯吃奶粉怎么办 饿了还是没食欲怎么办 3岁半幼儿便秘怎么办 小孩字写得难看怎么办 小孩的字写的丑怎么办 小孩字写的太差怎么办 小孩很多字不会写怎么办 食欲不好吃不多怎么办 中班小孩子子不肯写字怎么办 1岁宝便秘该怎么办 两周的宝宝便秘怎么办 3岁宝宝不肯吃药怎么办 1岁婴儿不肯吃药怎么办 9月婴儿不肯吃药怎么办 半岁宝宝不吃药怎么办 1岁宝宝不爱吃药怎么办 2岁吃多了呕吐怎么办啊 小孩吃撑了吐怎么办 三岁宝宝吃太多怎么办 小孩吃撑发烧了怎么办 婆婆不帮忙带孩子怎么办 孩子在中班幼儿园不爱写字怎么办 小孩不愿意上学不愿意写字怎么办 宝妈太内向不喜欢带孩子出门怎么办 宝宝吃饭不带围兜怎么办 宝宝吃饭不喜欢带围兜怎么办 宝宝吃饭不爱带围兜怎么办 孩子不吃肉和菜怎么办