Maison > Java > javaDidacticiel > Pagination SpringMVC MyBatis (dernière)

Pagination SpringMVC MyBatis (dernière)

高洛峰
Libérer: 2017-01-07 10:31:59
original
1413 Les gens l'ont consulté

Le framework Web MVC grand public actuel, en plus de Struts, dispose également de Spring MVC, principalement parce que Spring MVC est relativement simple à configurer, très clair à utiliser, très flexible, a une bonne intégration avec Spring et prend en charge l'API RESTful. mieux que les jambes de force.

MyBatis est une version améliorée d'ibatis. En tant qu'ancien rival d'hibernate, il s'agit d'un framework de couche de persistance qui peut personnaliser SQL, les procédures stockées et le mappage avancé.

La principale différence avec hibernate est que mybatis est semi-automatique, tandis que hibernate est entièrement automatique, donc lorsque les exigences de l'application deviennent de plus en plus complexes, le SQL automatisé devient plus maladroit.

Depuis que j'ai lancé un projet il y a quelque temps et que je voulais utiliser springmvc, j'ai commencé à jouer au jeu de l'intégration de frameworks avec une attitude pratique. Quiconque crée souvent des frameworks doit savoir que les fichiers de configuration sont au cœur de la construction d'un framework. Je poste donc principalement le code de plusieurs fichiers de configuration. Encore une fois, après avoir écrit le fichier de configuration, je l'exécute, je signale une erreur et j'ajoute le fichier jar. Voici une liste des packages jar que j'utilise (cela devrait être le minimum) :

SpringMVC MyBatis分页(最新)

Remarque : il y a quelques jars supplémentaires dans l'image ci-dessus. Par exemple, la connexion à la base de données. Le pool que j'utilise est Alibaba Druid et la journalisation du framework de journalisation, donc les fichiers jar associés ont été introduits. L’utilisation et la configuration de ces deux frameworks sont très simples, je n’entrerai donc pas dans les détails ici.

1. Intégrer SpringMVC

springMybatis-servlet.xml :

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 
    
    <!-- 启用spring mvc 注解-->
  <mvc:annotation-driven>  
  </mvc:annotation-driven> 
    
  <!-- 自动扫描的包名 ,使Spring支持自动检测组件,如注解的Controller-->
  <context:component-scan base-package="com.alibaba.controller" /> 
  <context:component-scan base-package="com.alibaba.service"/> 
    
    
  <!-- 视图解析器:定义跳转的文件的前后缀 --> 
  <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
    <property name="prefix" value="/WEB-INF/jsp/" />  
    <property name="suffix" value=".jsp" /> <!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
  </bean>  
  
  <!--配置拦截器, 多个拦截器,顺序执行 --> 
  <mvc:interceptors>  
    <mvc:interceptor>  
      <!-- 匹配的是url路径 -->
      <mvc:mapping path="/" /> 
      <mvc:mapping path="/user/**" /> 
      <mvc:mapping path="/test/**" /> 
        
      <bean class="com.alibaba.interceptor.CommonInterceptor"></bean>  
    </mvc:interceptor> 
    <!-- 当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandle和afterCompletion方法 -->
  </mvc:interceptors> 
     
</beans>
Copier après la connexion

2. spring-dao.xml :

3.web.xml intègre SpringMVC et Mybatis

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
    
  <!-- 该包下的类支持注解,表示会被当作{@code mybatis mapper}处理 配置了之后表示可以自动引入mapper类-->
  <mybatis:scan base-package="com.alibaba.dao"/> 
  <!--引入属性文件 -->
  <context:property-placeholder location="classpath:configuration.properties"/> 
    
  <!--数据库连接-->
  <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">  
    <property name="url" value="${jdbc.url}" /> 
    <property name="username" value="${jdbc.username}"/> 
    <property name="password" value="${jdbc.password}"/> 
    <!-- 配置初始化大小、最小、最大 -->
    <property name="initialSize"><value>1</value></property> 
    <property name="maxActive"><value>5</value></property> 
    <property name="minIdle"><value>1</value></property> 
    <!-- 配置获取连接等待超时的时间 -->
    <property name="maxWait"><value>60000</value></property> 
    <!-- 配置监控统计拦截的filters -->
    <property name="filters"><value>stat</value></property> 
    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
    <property name="timeBetweenEvictionRunsMillis"><value>60000</value></property> 
    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
    <property name="minEvictableIdleTimeMillis"><value>300000</value></property> 
    <!-- 
    <property name="validationQuery"><value>SELECT &#39;x&#39;</value></property> 
    <property name="testWhileIdle"><value>true</value></property> 
    <property name="testOnBorrow"><value>false</value></property> 
    <property name="testOnReturn"><value>false</value></property> 
    <property name="poolPreparedStatements"><value>true</value></property> 
    <property name="maxOpenPreparedStatements"><value>20</value></property> 
     -->
  </bean> 
    
  <!-- mybatis配置 -->
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
  </bean>  
</beans>
Copier après la connexion

4.logback.xml configuration du journal

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
  <!-- 该servlet为tomcat,jetty等容器提供,将静态资源映射从/改为/static/目录,如原来访问 http://localhost/foo.css ,现在http://localhost/static/foo.css -->
  <!-- 不拦截静态文件 -->
  <servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/js/*</url-pattern> 
    <url-pattern>/css/*</url-pattern> 
    <url-pattern>/images/*</url-pattern> 
    <url-pattern>/fonts/*</url-pattern> 
  </servlet-mapping> 
    
  <!-- 配置字符集 -->
  <filter> 
    <filter-name>encodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
      <param-name>encoding</param-name> 
      <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
      <param-name>forceEncoding</param-name> 
      <param-value>true</param-value> 
    </init-param> 
  </filter> 
  <filter-mapping> 
    <filter-name>encodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
  </filter-mapping> 
    
  <!-- 初始化 DispatcherServlet时,该框架在 web应用程序WEB-INF目录中寻找一个名为[servlet-名称]-servlet.xml的文件, 
      并在那里定义相关的Beans,重写在全局中定义的任何Beans -->
  <servlet> 
    <servlet-name>springMybatis</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
  </servlet> 
  <servlet-mapping> 
    <servlet-name>springMybatis</servlet-name> 
    <!-- 所有的的请求,都会被DispatcherServlet处理 -->
    <url-pattern>/</url-pattern> 
  </servlet-mapping> 
     
  <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/config/spring-*.xml</param-value> 
  </context-param> 
  <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
  </listener> 
  <!-- druid web 监控 -->
  <servlet> 
    <servlet-name>DruidStatView</servlet-name> 
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class> 
  </servlet> 
  <servlet-mapping> 
    <servlet-name>DruidStatView</servlet-name> 
    <url-pattern>/druid/*</url-pattern> 
  </servlet-mapping> 
    
  <error-page> 
    <error-code>404</error-code> 
    <location>/error/404.jsp</location> 
  </error-page> 
  <error-page> 
    <error-code>500</error-code> 
    <location>/error/500.jsp</location> 
  </error-page> 
</web-app>
Copier après la connexion

5 Configuration .configuration.properties

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
  
 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
  <encoder>  
    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
  </encoder> 
 </appender> 
   
 <logger name="test.LogbackTest" level="TRACE"/> 
   
 <logger name="com.alibaba.controller.TestController" level="TRACE"/> 
   
 <logger name="org.springframework.web.servlet.DispatcherServlet" level="DEBUG" /> 
 <logger name="druid.sql" level="INFO" /><!-- 如果spring-config里面没有配置slf4j,就不会显示sql日志,logback只是slf4j的一个实现 -->
 <root level="debug"> 
  <appender-ref ref="STDOUT" /> 
 </root> 
</configuration>
Copier après la connexion

6. Testez si la configuration est réussie, le code d'arrière-plan

jdbc.url=jdbc\:mysql\://localhost\:3306/druid?useUnicode\=true&characterEncoding\=UTF-8&zeroDateTimeBehavior\=convertToNull 
jdbc.username=root 
jdbc.password=123456
Copier après la connexion

La première consiste à vous connecter, le cryptage est utilisé, vous pouvez le supprimer.

Je n'écrirai pas sur le service et le modèle, mais j'écrirai sur le mappage de classes de mappeur de mybatis

package com.alibaba.controller;  
import javax.annotation.Resource; 
import javax.servlet.http.HttpServletRequest; 
  
import org.apache.commons.codec.digest.DigestUtils; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RequestParam; 
  
import com.alibaba.model.User; 
import com.alibaba.service.UserService; 
import com.alibaba.util.RequestUtil; 
  
/** 
 * @author tfj 
 * 2014-7-26 
 */
@Controller
public class SystemController { 
  private final Logger log = LoggerFactory.getLogger(SystemController.class); 
  @Resource
  private UserService userService; 
    
  @RequestMapping(value = "/",method = RequestMethod.GET) 
  public String home() { 
    log.info("返回首页!"); 
    return "index"; 
  } 
    
  @RequestMapping(value = "/test/hello",method = RequestMethod.GET) 
  public String testHello() { 
    log.info("执行了testHello方法!"); 
    return "testHello"; 
  } 
    
  @RequestMapping(value = "/login",method = RequestMethod.POST) 
  public String testLogin(HttpServletRequest request,@RequestParam String username, @RequestParam String password) { 
    log.info("执行了testLogin方法!"); 
    User user = userService.findUserByName(username); 
    if(user!=null){ 
      if(user.getPassword().equals(DigestUtils.md5Hex(password))){ 
        request.getSession().setAttribute("userId", user.getId());  
        request.getSession().setAttribute("user", username);  
        return "redirect:" + RequestUtil.retrieveSavedRequest();//跳转至访问页面 
      }else{ 
        log.info("密码错误");  
        request.getSession().setAttribute("message", "用户名密码错误,请重新登录"); 
        return "login";  
      } 
    }else{ 
      log.info("用户名不存在");  
      request.getSession().setAttribute("message", "用户名不存在,请重新登录"); 
      return "login";  
    } 
  } 
}
Copier après la connexion

7 Le jsp frontal est principalement la connexion et la connexion. page de réussite, donc je n'écrirai pas à ce sujet

<?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.alibaba.dao.UserMapper">   
  <select id="findUserByName" resultType="com.alibaba.model.User"> 
    select id, username , password from sysuser where username = #{username}  
  </select> 
</mapper>
Copier après la connexion
Par conséquent, springmvc mybatis est intégré avec succès. Des fonctions complexes ultérieures seront ajoutées

Notes

1 Les configurations de druide et de connexion dans le framework sont toutes copiées du site officiel, elles sont donc les plus basiques. , les lecteurs peuvent l'ignorer ou le remplacer par des composants de base de données et des frameworks de journalisation qu'ils connaissent, tels que c3p0 et log4j.

2. La gestion des autorisations a été ajoutée au code, c'est-à-dire que vous devez vous connecter avant d'accéder, et après vous être connecté, vous accéderez à la page pour y accéder

3. Cet article est la version la plus simple extraite de mon code de test. C'est également le code le plus basique. Veuillez me pardonner certaines parties qui n'ont pas été supprimées proprement.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. J'espère également que tout le monde soutiendra le site Web PHP chinois.

Pour plus d'articles sur la pagination SpringMVC MyBatis (derniers), veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal