zoukankan      html  css  js  c++  java
  • ssm配置

    本次采用的Spring MVC Jar包如下:

    spring-aop-4.1.3.RELEASE.jar
    spring-beans-4.1.3.RELEASE.jar
    spring-context-4.1.3.RELEASE.jar
    spring-context-support-4.1.3.RELEASE.jar
    spring-core-4.1.3.RELEASE.jar
    spring-expression-4.1.3.RELEASE.jar
    spring-jdbc-4.1.3.RELEASE.jar
    spring-oxm-4.1.3.RELEASE.jar
    spring-tx-4.1.3.RELEASE.jar
    spring-web-4.1.3.RELEASE.jar
    spring-webmvc-4.1.3.RELEASE.jar

    1.首先创建Web项目
    web.mvc
    2.引入所有的jar文件
    3.配置web.xml
    做web开发的都知道,web.xml是项目的入口,我们既然使用spring那么当然要添加Spring的支持啦!
    spring默认加载的是applicationContext.xml,由于我们需要集成MyBatis
    所以我把Spring的配置文件强制指定名称,并与MyBatis一起配置,减少配置文件数量
    先指定spring配置文件名名称与路径

    [html] view plain copy
     
    1. <!--  Spring 上下文参数 加载Spring配置文件 -->  
    2.     <context-param>  
    3.         <param-name>contextConfigLocation</param-name>  
    4.         <param-value>classpath*:xmlconfig/springmvc-mybatis.xml</param-value>  
    5.     </context-param>  

    再执行Spring上下文监听配置

    [html] view plain copy
     
    1. <listener>  
    2.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    3. </listener>  

    添加支持Spring mvc 的配置
    说明:添加支持目前有3种方式。第一种:拦截 /*.do

    [html] view plain copy
     
    1. <!-- spring mvc 拦截器配置 -->  
    2. <servlet>  
    3.     <servlet-name>springmvc</servlet-name>  
    4.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    5.         <init-param>  
    6.             <param-name>contextConfigLocation</param-name>  
    7.             <param-value>classpath*:/xmlconfig/springmvc-servlet.xml</param-value>  
    8.         </init-param>  
    9.         <load-on-startup>1</load-on-startup>  
    10.     </servlet>  
    11.     <servlet-mapping>  
    12.     <servlet-name>springmvc</servlet-name>  
    13.     <url-pattern>/*.do</url-pattern>  
    14. </servlet-mapping>  


    优势:拦截明确,不会和其他的拦截冲突
    缺点:URL不美观

    第二种:拦截 /*

    [html] view plain copy
     
    1. <!-- spring mvc 拦截器配置 -->  
    2. <servlet>  
    3.     <servlet-name>springmvc</servlet-name>  
    4.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    5.         <init-param>  
    6.             <param-name>contextConfigLocation</param-name>  
    7.             <param-value>classpath*:/xmlconfig/springmvc-servlet.xml</param-value>  
    8.         </init-param>  
    9.         <load-on-startup>1</load-on-startup>  
    10.     </servlet>  
    11.     <servlet-mapping>  
    12.     <servlet-name>springmvc</servlet-name>  
    13.     <url-pattern>/*</url-pattern>  
    14. </servlet-mapping>  


    优点:支持rest风格,Url美观
    缺点:会拦截静态资源

    第三种,也是我推荐的一种:拦截 /

    [html] view plain copy
     
    1. <!-- spring mvc 拦截器配置 -->  
    2. <servlet>  
    3.     <servlet-name>springmvc</servlet-name>  
    4.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    5.         <init-param>  
    6.             <param-name>contextConfigLocation</param-name>  
    7.             <param-value>classpath*:/xmlconfig/springmvc-servlet.xml</param-value>  
    8.         </init-param>  
    9.         <load-on-startup>1</load-on-startup>  
    10.     </servlet>  
    11.     <servlet-mapping>  
    12.     <servlet-name>springmvc</servlet-name>  
    13.     <url-pattern>/</url-pattern>  
    14. </servlet-mapping>  

    优点:支持rest风格,URL美观,不拦截静态资源
    我们采用第三种做为我们的拦截方案,将配置添加到web.xml中。
    大家都知道,web项目最怕的就是乱码,而spring为我们提供了字符编码的过滤器,我们也给配置到web.xml中

    [html] view plain copy
     
    1. <!-- 字符编码配置 -->  
    2. <filter>  
    3.     <filter-name>characterEncodingFilter</filter-name>  
    4.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
    5.     <init-param>  
    6.         <param-name>encoding</param-name>  
    7.         <param-value>UTF-8</param-value>  
    8.     </init-param>  
    9.     <init-param>  
    10.         <param-name>forceEncoding</param-name>  
    11.         <param-value>true</param-value>  
    12.     </init-param>  
    13. </filter>  
    14. <filter-mapping>    
    15.     <filter-name>characterEncodingFilter</filter-name>    
    16.     <url-pattern>/*</url-pattern>  
    17. </filter-mapping>  
    [html] view plain copy
     
    1. <!-- 字符编码配置 -->  
    2. <filter>  
    3.     <filter-name>characterEncodingFilter</filter-name>  
    4.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
    5.     <init-param>  
    6.         <param-name>encoding</param-name>  
    7.         <param-value>UTF-8</param-value>  
    8.     </init-param>  
    9.     <init-param>  
    10.         <param-name>forceEncoding</param-name>  
    11.         <param-value>true</param-value>  
    12.     </init-param>  
    13. </filter>  
    14. <filter-mapping>    
    15.     <filter-name>characterEncodingFilter</filter-name>    
    16.     <url-pattern>/*</url-pattern>  
    17. </filter-mapping>  


    我们采用的是tomcat服务器,为了让静态的资源直接交给tomcat处理,所以我们在web.xml中配置了以下配置

    [html] view plain copy
     
    1. <!-- 激活Tomcat的defaultServlet来处理静态文件 -->  
    2. <servlet-mapping>  
    3.     <servlet-name>default</servlet-name>  
    4.     <url-pattern>*.jpg</url-pattern>  
    5. </servlet-mapping>  
    6. <servlet-mapping>  
    7.     <servlet-name>default</servlet-name>  
    8.     <url-pattern>*.gif</url-pattern>  
    9. </servlet-mapping>  
    10. <servlet-mapping>  
    11.     <servlet-name>default</servlet-name>  
    12.     <url-pattern>*.png</url-pattern>  
    13. </servlet-mapping>  
    14. <servlet-mapping>  
    15.     <servlet-name>default</servlet-name>  
    16.     <url-pattern>*.js</url-pattern>  
    17. </servlet-mapping>  
    18. <servlet-mapping>  
    19.     <servlet-name>default</servlet-name>  
    20.     <url-pattern>*.css</url-pattern>  
    21. </servlet-mapping>  
    [html] view plain copy
     
    1. <!-- 激活Tomcat的defaultServlet来处理静态文件 -->  
    2. <servlet-mapping>  
    3.     <servlet-name>default</servlet-name>  
    4.     <url-pattern>*.jpg</url-pattern>  
    5. </servlet-mapping>  
    6. <servlet-mapping>  
    7.     <servlet-name>default</servlet-name>  
    8.     <url-pattern>*.gif</url-pattern>  
    9. </servlet-mapping>  
    10. <servlet-mapping>  
    11.     <servlet-name>default</servlet-name>  
    12.     <url-pattern>*.png</url-pattern>  
    13. </servlet-mapping>  
    14. <servlet-mapping>  
    15.     <servlet-name>default</servlet-name>  
    16.     <url-pattern>*.js</url-pattern>  
    17. </servlet-mapping>  
    18. <servlet-mapping>  
    19.     <servlet-name>default</servlet-name>  
    20.     <url-pattern>*.css</url-pattern>  
    21. </servlet-mapping>  


    4.配置springmvc-mybatis.xml和springmvc-servlet.xml
    相信很多人都在这里卡主了,因为配置实在是太多了,各种方式都有
    为了不妨碍大家,我决定直接将完整的配置直接贴出来
    springmvc-mybatis.xml

    [html] 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:p="http://www.springframework.org/schema/p"      
    5.        xmlns:mvc="http://www.springframework.org/schema/mvc"      
    6.        xmlns:context="http://www.springframework.org/schema/context"      
    7.        xmlns:util="http://www.springframework.org/schema/util"      
    8.        xsi:schemaLocation="http://www.springframework.org/schema/beans   
    9.             http://www.springframework.org/schema/beans/spring-beans-4.1.xsd      
    10.             http://www.springframework.org/schema/context   
    11.             http://www.springframework.org/schema/context/spring-context-4.1.xsd      
    12.             http://www.springframework.org/schema/mvc   
    13.             http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd      
    14.             http://www.springframework.org/schema/util   
    15.             http://www.springframework.org/schema/util/spring-util-4.1.xsd">   
    16.   
    17.     <!-- 数据源定义-->  
    18.     <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource">  
    19.         <property name="driverClass" value="jdbc:mysql://127.0.0.1:3306/web" />  
    20.         <property name="jdbcUrl" value="root" />  
    21.         <property name="username" value="123456" />  
    22.         <property name="password" value="com.mysql.jdbc.Driver" />  
    23.     </bean>  
    24.       
    25.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
    26.         <property name="dataSource" ref="dataSource" />  
    27.         <property name="mapperLocations" value="classpath*:dbmap/*Mapper.xml" />  
    28.     </bean>  
    29.       
    30.     <!-- 配置事务管理器 -->  
    31.     <bean id="transactionManager"   
    32.           class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
    33.         <property name="dataSource" ref="dataSource" />  
    34.     </bean>  
    35.       
    36.     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
    37.         <property name="dataSource">  
    38.             <ref bean="dataSource" />  
    39.         </property>  
    40.     </bean>  
    41.     <bean id="defaultLobHandler"   
    42.           class="org.springframework.jdbc.support.lob.DefaultLobHandler"   
    43.           lazy-init="true"/>  
    44.     <!-- 查 找 类 路 径 下 的 映 射 器 并 自 动 将 它 们 创 建 成 MapperFactoryBean-->  
    45.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
    46.         <property name="basePackage" value="com.ansitech.web.orm.mapper" />  
    47.     </bean>  
    48. </beans>  

    spring-servlet.xml

    [html] 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.        xmlns:mvc="http://www.springframework.org/schema/mvc"  
    6.        xsi:schemaLocation="http://www.springframework.org/schema/mvc   
    7.        http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd  
    8.         http://www.springframework.org/schema/beans   
    9.                 http://www.springframework.org/schema/beans/spring-beans-4.1.xsd  
    10.         http://www.springframework.org/schema/context   
    11.                 http://www.springframework.org/schema/context/spring-context-4.1.xsd">  
    12.       
    13.     <description>Spring MVC Configuration</description>  
    14.       
    15.     <!-- 对静态资源文件的访问,交给default servlet handler处理 -->  
    16.     <mvc:default-servlet-handler/>  
    17.       
    18.     <!-- 启用spring mvc 注解 -->  
    19.     <context:annotation-config />  
    20.       
    21.     <!-- 默认的注解映射的支持 -->  
    22.     <mvc:annotation-driven />  
    23.       
    24.     <!-- 设置使用注解的类所在的jar包 -->  
    25.     <context:component-scan base-package="com.ansitech.web"></context:component-scan>  
    26.       
    27.     <!-- 完成请求和注解POJO的映射 -->  
    28. <bean class=  
    29.       "org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>  
    30.       
    31.     <!-- JSP视图文件解析配置 -->  
    32. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
    33.     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>  
    34.     <property name="prefix" value="/WEB-INF/view/"/>  
    35.     <property name="suffix" value=".jsp"/>  
    36.     <property name="viewNames" value="jsp/*"/>  
    37.     <property name="order" value="1"/>  
    38. </bean>  
    39.       
    40. <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">  
    41.     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>  
    42.     <property name="prefix" value="/WEB-INF/view/"/>  
    43.     <property name="suffix" value=".jsp"/>  
    44.     <property name="order" value="2"/>  
    45. </bean>  
    46.   
    47.     <!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1024(B)=10485760 bytes -->    
    48.     <bean id="multipartResolver"   
    49.           class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    
    50.         <!-- one of the properties available; the maximum file size in bytes -->  
    51.         <property name="maxUploadSize">  
    52.             <value>5242880</value>  
    53.         </property>  
    54.     </bean>  
    55. </beans>  

    web.xml

    [html] view plain copy
     
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2.   
    3. <web-app xmlns="http://java.sun.com/xml/ns/javaee"  
    4.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    5.          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    6.          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
    7.          version="3.0">  
    8.     <!-- 程序Session配置 -->  
    9.     <session-config>  
    10.         <!-- Session过期时间(单位:分) -->  
    11.         <session-timeout>30</session-timeout>  
    12.     </session-config>  
    13.       
    14.     <!-- 激活Tomcat的defaultServlet来处理静态文件 -->  
    15.     <servlet-mapping>  
    16.         <servlet-name>default</servlet-name>  
    17.         <url-pattern>*.jpg</url-pattern>  
    18.     </servlet-mapping>  
    19.     <servlet-mapping>  
    20.         <servlet-name>default</servlet-name>  
    21.         <url-pattern>*.gif</url-pattern>  
    22.     </servlet-mapping>  
    23.     <servlet-mapping>  
    24.         <servlet-name>default</servlet-name>  
    25.         <url-pattern>*.png</url-pattern>  
    26.     </servlet-mapping>  
    27.     <servlet-mapping>  
    28.         <servlet-name>default</servlet-name>  
    29.         <url-pattern>*.js</url-pattern>  
    30.     </servlet-mapping>  
    31.     <servlet-mapping>  
    32.         <servlet-name>default</servlet-name>  
    33.         <url-pattern>*.css</url-pattern>  
    34.     </servlet-mapping>  
    35.   
    36.     <!--  Spring 上下文参数 加载Spring配置文件 -->  
    37.     <context-param>  
    38.         <param-name>contextConfigLocation</param-name>  
    39.         <param-value>classpath*:xmlconfig/springmvc-mybatis.xml</param-value>  
    40.     </context-param>  
    41.     
    42.     <listener>  
    43.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    44.     </listener>  
    45.       
    46.     <!-- spring mvc 拦截器配置 -->  
    47.     <servlet>  
    48.         <servlet-name>springmvc</servlet-name>  
    49.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    50.         <init-param>  
    51.             <param-name>contextConfigLocation</param-name>  
    52.             <param-value>classpath*:/xmlconfig/springmvc-servlet.xml</param-value>  
    53.         </init-param>  
    54.         <load-on-startup>1</load-on-startup>  
    55.     </servlet>  
    56.     <servlet-mapping>  
    57.         <servlet-name>springmvc</servlet-name>  
    58.         <url-pattern>/</url-pattern>  
    59.     </servlet-mapping>  
    60.       
    61.     <!-- 字符编码配置 -->  
    62.     <filter>  
    63.         <filter-name>characterEncodingFilter</filter-name>  
    64.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
    65.         <init-param>  
    66.             <param-name>encoding</param-name>  
    67.             <param-value>UTF-8</param-value>  
    68.         </init-param>  
    69.         <init-param>  
    70.             <param-name>forceEncoding</param-name>  
    71.             <param-value>true</param-value>  
    72.         </init-param>  
    73.     </filter>  
    74.     <filter-mapping>    
    75.         <filter-name>characterEncodingFilter</filter-name>    
    76.         <url-pattern>/*</url-pattern>  
    77.     </filter-mapping>  
    78.   
    79.     <!-- 欢迎页 -->  
    80.     <welcome-file-list>  
    81.         <welcome-file>/index.html</welcome-file>  
    82.     </welcome-file-list>  
    83. </web-app>  

    接下来就是包的结构了
    前缀大家可以自己定义自己喜欢的,但是后边的结构,是整个框架的核心,所以请大家按照我的格式去建
    前缀com.ansitech
    com.ansitech.orm
    com.ansitech.orm.base
    com.ansitech.orm.mapper
    com.ansitech.service
    com.ansitech.service.po
    com.ansitech.service.impl
    com.ansitech.web
    com.ansitech.web.controller
    大家可能不理解,为什么要这么建呢?
    那么我们来以用户管理模块来解释,用户对象为User
    那么我们需要建立基础对象:
    com.ansitech.orm.base.User.Java

    [html] view plain copy
     
    1. package com.ansitech.orm.base;  
    2.   
    3. /**  
    4.  * 用户对象  
    5.  *  
    6.  * @author qsyang  
    7.  */  
    8. public class User {  
    9.   
    10.     private int id;  
    11.     private String loginName;  
    12.     private String loginPwd;  
    13.     /**  
    14.      * 用户类型 1 管理员 2 普通用户  
    15.      */  
    16.     private int typeId;  
    17.   
    18.     public int getId() {  
    19.         return id;  
    20.     }  
    21.   
    22.     public void setId(int id) {  
    23.         this.id = id;  
    24.     }  
    25.   
    26.     public String getLoginName() {  
    27.         return loginName;  
    28.     }  
    29.   
    30.     public void setLoginName(String loginName) {  
    31.         this.loginName = loginName;  
    32.     }  
    33.   
    34.     public String getLoginPwd() {  
    35.         return loginPwd;  
    36.     }  
    37.   
    38.     public void setLoginPwd(String loginPwd) {  
    39.         this.loginPwd = loginPwd;  
    40.     }  
    41.   
    42.     public int getTypeId() {  
    43.         return typeId;  
    44.     }  
    45.   
    46.     public void setTypeId(int typeId) {  
    47.         this.typeId = typeId;  
    48.     }  
    49. }  

    基础对象建好了,我们需要做一个Mapper来实现用户对象的增删改查

    com.ansitech.orm.mapper.UserMapper.java

    [html] view plain copy
     
    1. package com.ansitech.orm.mapper;  
    2.   
    3. import com.ansitech.orm.base.User;  
    4. import org.apache.ibatis.annotations.Param;  
    5.   
    6. /**  
    7.  * 用户数据接口  
    8.  *  
    9.  * @author qsyang  
    10.  */  
    11. public interface UserMapper {  
    12.   
    13.     void add(User user);  
    14.   
    15.     User get(@Param("id") int id);  
    16.   
    17.     void update(User user);  
    18.   
    19.     int delete(@Param("id") int id);  
    20.   
    21. }  

    使用ORM模式,我们需要创建一个抽象的用户对象来解决额外属性查询的问题

    com.ansitech.orm.AbstractUser.java

    [html] view plain copy
     
    1. package com.ansitech.orm;  
    2.   
    3. import com.ansitech.orm.base.User;  
    4.   
    5. /**  
    6.  * 抽象用户对象  
    7.  *  
    8.  * 提供其他属性获取  
    9.  *  
    10.  * @author qsyang  
    11.  */  
    12. public abstract class AbstractUser extends User{  
    13.   
    14.     //获取当前用户所属分类名称  
    15.     public abstract String findTypeName();  
    16. }  

    有了数据接口了,我们需要对外提供服务

    com.ansitech.service.IUserService.java

    [html] view plain copy
     
    1. package com.ansitech.service;  
    2.   
    3. import com.ansitech.orm.AbstractUser;  
    4. import com.ansitech.orm.base.User;  
    5.   
    6. /**  
    7.  * 用户服务接口  
    8.  *  
    9.  * @author qsyang  
    10.  */  
    11. public interface IUserService {  
    12.   
    13.     //添加系统管理员  
    14.     void addSystemUser(String loginName, String loginPwd);  
    15.   
    16.     //添加普通用户  
    17.     void addNormalUser(String loginName, String loginPwd);  
    18.       
    19.     //根据用户Id查询抽象用户  
    20.     AbstractUser getAbstractUserById(int userId);  
    21.   
    22.     //根据用户Id查询用户  
    23.     User getUserById(int userId);  
    24.   
    25.     //修改用户信息  
    26.     void updateUser(int userId, String loginName, String loginPwd);  
    27.   
    28.     //根据用户Id删除用户  
    29.     int deleteUser(int userId);  
    30. }  



    有了服务接口,就要有实现接口

    com.ansitech.service.impl.UserService.java

    [html] view plain copy
     
    1. package com.ansitech.service.impl;  
    2.   
    3. import com.ansitech.orm.AbstractUser;  
    4. import com.ansitech.orm.base.User;  
    5. import com.ansitech.orm.mapper.UserMapper;  
    6. import com.ansitech.service.IUserService;  
    7. import org.springframework.beans.factory.annotation.Autowired;  
    8. import org.springframework.stereotype.Service;  
    9.   
    10. /**  
    11.  * 用户接口实现类  
    12.  *  
    13.  * @author qsyang  
    14.  */  
    15. @Service  
    16. public class UserService implements IUserService {  
    17.   
    18.     @Autowired  
    19.     private UserMapper userMapper;  
    20.   
    21.     @Override  
    22.     public void addSystemUser(String loginName, String loginPwd) {  
    23.         User user = new User();  
    24.         user.setLoginName(loginName);  
    25.         user.setLoginPwd(loginPwd);  
    26.         //用户类型 1 管理员 2 普通用户  
    27.         user.setTypeId(1);  
    28.         userMapper.add(null);  
    29.     }  
    30.   
    31.     @Override  
    32.     public void addNormalUser(String loginName, String loginPwd) {  
    33.         User user = new User();  
    34.         user.setLoginName(loginName);  
    35.         user.setLoginPwd(loginPwd);  
    36.         //用户类型 1 管理员 2 普通用户  
    37.         user.setTypeId(2);  
    38.         userMapper.add(null);  
    39.     }  
    40.   
    41.     @Override  
    42.     public AbstractUser getAbstractUserById(int userId) {  
    43.         throw new UnsupportedOperationException("Not supported yet.");  
    44.     }  
    45.   
    46.     @Override  
    47.     public User getUserById(int userId) {  
    48.         return userMapper.get(userId);  
    49.     }  
    50.   
    51.     @Override  
    52.     public void updateUser(int userId, String loginName, String loginPwd) {  
    53.         //先根据用户Id查询用户对象  
    54.         User user = userMapper.get(userId);  
    55.         if (user != null) {  
    56.             user.setLoginName(loginName);  
    57.             user.setLoginPwd(loginPwd);  
    58.             //修改用户  
    59.             userMapper.update(user);  
    60.         }  
    61.     }  
    62.   
    63.     @Override  
    64.     public int deleteUser(int userId) {  
    65.         return userMapper.delete(userId);  
    66.     }  
    67.   
    68. }<span style="font-family: Arial; font-size: 14px; line-height: 26px;">细心的便宜,可能已经看到了,getAbstractUserById()这个方法我们还没有实现</span><br style="font-family: Arial; font-size: 14px; line-height: 26px;" /><span style="font-family: Arial; font-size: 14px; line-height: 26px;">因为AbstractUser还有具体的实现类,所以我们来新建实现类</span>  
    [html] view plain copy
     
    1. <span style="font-family: Arial; font-size: 14px; line-height: 26px;"></span><pre name="code" class="html">package com.ansitech.service.po;  
    2.   
    3. import com.ansitech.orm.AbstractUser;  
    4. import com.ansitech.orm.base.User;  
    5. import com.ansitech.service.impl.UserService;  
    6.   
    7. /**  
    8.  * 用户数据操作对象  
    9.  *  
    10.  * @author qsyang  
    11.  */  
    12. public class UserPO extends AbstractUser {  
    13.   
    14.     private final UserService userService;  
    15.   
    16.     public UserPO(UserService userService) {  
    17.         this.userService = userService;  
    18.     }  
    19.   
    20.     public UserPO copyFrom(User obj) {  
    21.         this.setId(obj.getId());  
    22.         this.setLoginName(obj.getLoginName());  
    23.         this.setLoginPwd(obj.getLoginPwd());  
    24.         this.setTypeId(obj.getTypeId());  
    25.         return this;  
    26.     }  
    27.   
    28.     @Override  
    29.     public String findTypeName() {  
    30.         return userService.findTypeName(this.getTypeId());  
    31.     }  
    32.   
    33. }  



    
    


    对象已经创建好了,这个时候我们可以修改下service实现类的方法了,并且我们增加了一个方法
    增加这个方法,只是因为我们有可能需要继续调用其他的Mapper去查询。
    修改的实现方法

    [html] view plain copy
     
    1. @Override  
    2. public AbstractUser getAbstractUserById(int userId) {  
    3.     User user = userMapper.get(userId);  
    4.     if (user != null) {  
    5.         UserPO po = new UserPO(this);  
    6.         po.copyFrom(user);  
    7.         return po;  
    8.     }  
    9.     return null;  
    10. }  


    新增的方法:

    [html] view plain copy
     
    1. public String findTypeName(int typeId) {  
    2.     if (typeId == 1) {  
    3.         return "系统管理员";  
    4.     } else {  
    5.         return "普通用户";  
    6.     }  
    7. }  

    只有一来,Service架构和orm架构就已经完成了,下面只需要建立控制器就可以了

    [html] view plain copy
     
      1. package com.ansitech.web.controller.user;  
      2.   
      3. import com.ansitech.orm.base.User;  
      4. import com.ansitech.service.impl.UserService;  
      5. import org.springframework.beans.factory.annotation.Autowired;  
      6. import org.springframework.stereotype.Controller;  
      7. import org.springframework.web.bind.annotation.RequestMapping;  
      8.   
      9. /**  
      10.  * 用户控制器  
      11.  *  
      12.  * @author qsyang  
      13.  */  
      14. @Controller  
      15. public class UserController {  
      16.   
      17.     @Autowired  
      18.     private UserService userService;  
      19.   
      20.     @RequestMapping("/user/user-index")  
      21.     public String index() {  
      22.         User user = userService.getUserById(1);  
      23.         if (user != null) {  
      24.             System.out.println("user name = " + user.getLoginName());  
      25.         }  
      26.         return "jsp/user/index";  
      27.     }  
      28. }  
  • 相关阅读:
    简单理解jQuery中$.getJSON、$.get、$.post、$.ajax用法
    适配器模式(Adapter Pattern)
    什么样的登录框才算是优秀的?
    transient的作用及序列化
    MySQL索引实现原理
    concurrentHashMap原理分析和总结(JDK1.8)
    HashMap实现原理(JDK1.8)
    深入理解Java中的IO
    多线程系列
    多线程系列
  • 原文地址:https://www.cnblogs.com/cfas/p/7845501.html
Copyright © 2011-2022 走看看