Maison > Java > javaDidacticiel > le corps du texte

Java intègre le plug-in Crud et Paging pour faire fonctionner MySQL

Y2J
Libérer: 2017-05-10 09:37:20
original
1944 Les gens l'ont consulté

Cet article présente principalement les étapes détaillées de Spring mvc intégrant mybatis (plug-in crud + paging) pour faire fonctionner MySQL. Les amis dans le besoin peuvent se référer à

1. configuration

Nous savons tous que la première chose à faire lors du démarrage d'un projet Java ee est de lire web.xml J'ai également expliqué le web.xml de spring mvc en détail dans le précédent. article. Non. Si vous comprenez, vous pouvez regarder en arrière. Je mettrai également le code source du projet que j'ai expliqué sur github Vous pouvez également y aller pour y jeter un œil, je ne le présenterai pas. ça ici.

configuration web.xml

<context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:/context.xml</param-value>
</context-param>
<!-- 监听器:启动服务器时,启动 spring -->
<listener>
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- spring 核心控制器 -->
<servlet>
 <servlet-name>dispatcherServlet</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <load-on-startup>1</load-on-startup>
<init-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:external-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
 <servlet-name>dispatcherServlet</servlet-name>
 <url-pattern>/</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>
Copier après la connexion

2. configuration du contexte Spring (context.xml)

ceLe fichier de configuration peut être considéré comme la deuxième chose à lire par le conteneur du serveur. Ici, il configure le chemin de base du package analysé lors du démarrage du printemps, l'importation des attributs configurés en externe et les fichiers. La configuration, l'intégration de mybatis et spring, le plug-in de date mybatis et le plug-in de pagination que nous avons évoqués au début sont également configurés ici, ainsi que le package d'entité et son emplacement de fichier mapper analysés. par mybatis.

configuration context.xml

<!-- spring 扫描的基础包路径 -->
<context:component-scan base-package="com.qbian" />
<!-- jdbc properties -->
<bean id="propertyConfigurer"
 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
 p:location="classpath:jdbc.properties" />
<!-- define the datasource (这里用的是c3p0的数据看连接池,性能不是很好,可以唤其它更好的连接池[jdbc pool等])-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
 destroy-method="close">
 <property name="driverClass" value="${jdbc.driverClassName}" />
 <property name="jdbcUrl" value="${jdbc.url}" />
 <property name="user" value="${jdbc.username}" />
 <property name="password" value="${jdbc.password}" />
</bean>
<!-- define the SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 <property name="dataSource" ref="dataSource" />
 <property name="typeAliasesPackage" value="com.qbian.**.dto" />
 <property name="plugins">
 <list>
  <!-- 配置自己实现的日期插件 -->
  <bean class="com.qbian.common.plugin.DatePlugin" />
  <!-- 分页插件 -->
  <bean class="com.qbian.common.plugin.PagePlugin" />
 </list>
 </property>
</bean>
<!-- scan for mappers and let them be autowired -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
 <property name="basePackage" value="com.qbian.**.dao" />
 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
<!-- 将多个配置文件读取到容器中,交给Spring管理 -->
<bean id="configProperties" class="com.qbian.common.plugin.PropertiesConfigurer">
 <property name="locations">
 <list>
  <!--<value>classpath:redis.properties</value>-->
 </list>
 </property>
</bean>
Copier après la connexion

3. Configuration du contrôleur Spring

La configuration ici est l'endroit où se trouve le contrôleur. L'emplacement, ainsi que ses types de requêtes et encodages pris en charge.

configuration external-servlet.xml

<!-- 控制器扫描 -->
<context:component-scan base-package="com.qbian.common.controller" />
<mvc:annotation-driven>
 <mvc:message-converters>
 <bean class="org.springframework.http.converter.StringHttpMessageConverter">
  <property name="supportedMediaTypes">
  <list>
   <value>text/html;charset=UTF-8</value>
  </list>
  </property>
  <property name="writeAcceptCharset" value="false" />
 </bean>
 </mvc:message-converters>
</mvc:annotation-driven>
Copier après la connexion

Les informations de configuration sont les trois ci-dessus, jetons un coup d'œil au code spécifique,

4. Explication du code

1. Explication du code Java, ce qui suit n'est pas trié, juste classé dans l'ordre affiché dans l'éditeur. (Les contenus suivants se trouvent tous dans le package java.com.qbian)

 common |
 annotation |
 @interface Now : 插入|更新数据的日期注解。
 @interface UUID :插入数据的uuid注解。
 controller |
 ExternalController.class :核心控制器,拦截所有请求,异常处理,跨域设置等功能。
 dao |
 interface StudentDao :使用例子,crud 共通方法。
 dto |
 PageInfoDto.class :分页使用的基础dto对象。
 ResponseDto.class :响应数据的基本模型。
 entity |
 Student.class :使用例子,自定义注解的使用。
 enums |
 enum MessageEnum :统一的返回状态码及描述信息。
 exception |
 ExternalServiceException.class :自定义异常,业务相关都抛出该异常对象。
 factory |
 BeanFactoryUtil.class :根据bean name获取spring管理的bean实例。
 hadle |
 ExceptionHandle.class :spring自带的统一异常捕获处理。
 plugin |
 DatePlugin.class :自定义mybatis日期插件。
 PagePlugin.class :自定义mybatis分页插件。
 PropertiesConfigurer.class :将外部配置的属性文件读取到 spring 容器中统一管理。
 service |
 interface IbaseServie :基础的service接口。
 BaseService.class :基础的service抽象类。
 TokenService.class :鉴权token服务类。
 util |
 CheckUtil.class :请求信息校验相关工具类。
 DateUtil.class :日期相关工具类。
 ResponseUtil.class :响应信息工具类。
 SecondsFormatSerializer.class :java.util.Date类型转时间戳工具类。
 TimestampSecondsFormatSerializer.class :java.sql.Timestamp类型转时间戳工具类。
 StringUtil.class :字符串相关工具类。
other |
 dao |
 interface StudentExtDao :使用例子,业务相关crud操作。
 dto |
 QueryStudentSexPageDto.class :根据学生性别分页查询返回对象dto。
 StudentPageDto.class :根据学生性别分页查询封装的对象。
 service |
 AddStudentService.class :插入学生数据接口。
 DeleteStudentService.class :删除学生数据接口。
 FindStudentService.class :查询学生数据接口。
 UpdateStudentService.class :更新学生数据接口。
 QueryStudentBySexService.class :根据学生性别分页查询接口。
Copier après la connexion

2. Explication Mybatis mapper.xml (les contenus suivants se trouvent tous dans le dossier resources/com/qbian)

common |
 dao |
 StudentDao.xml :对应common.dao.StudentDao接口。
other |
 dao |
 StudentExtDao.xml :对应other.dao.StudentExtDao接口。
Copier après la connexion

5. Démonstration de fonction

1. Vérification du jeton

J'ai écrit le jeton ici dans le code Oui, 123456 signifie que la vérification est réussie. Testons-le d'abord en utilisant l'interface d'insertion de données et transmettons un jeton incorrect, comme indiqué ci-dessous :

Vérification du jeton d'autorisation

2, Paramètres de requêteVérification

Jetons un coup d'œil aux valeurs qui doivent être vérifiées lors de l'insertion de l'interface de données.

// 校验请求参数
CheckUtil.checkEmpty(params, "token", "sex", "age");
// 校验 token
tokenService.checkUserLogin(params.getString("token"));
Student student = JSONObject.parseObject(params.toJSONString(), Student.class);
studentDao.insert(student);
return ResponseUtil.success();
Copier après la connexion

Essayons ensuite de moins transmettre le champ d'âge :

Demande de vérification du champ

3. 🎜>

Avant d'insérer des données, regardons quelles données se trouvent dans la base de données :

Initialisez les valeurs dans la base de données

Comme vous pouvez le voir sur l'image ci-dessus, il n'y a aucune donnée dans la base de données. Exécutons l'interface d'insertion.

Tester l'interface d'insertion

Jetons un œil à la base de données :

Après avoir appelé l'interface d'insertion

La base de données contient déjà des données.

4. Interroger les données

Requête en fonction de l'ID des données précédentes

Appeler l'interface de requête

Nous avons également interrogé les données que nous venons d'insérer.

5. Mettre à jour les données

Mettre à jour les données interrogées :

Appeler l'interface de mise à jour

Ensuite, nous interrogeons à nouveau les données

Après la mise à jour, interrogez à nouveau

Vous pouvez voir que le sexe et l'âge ont été mis à jour, ainsi que la date de mise à jour est aussi le dernier.

6. Requête de pagination

Jetons d'abord un coup d'œil au code :

// 校验请求参数
CheckUtil.checkEmpty(params, "token", "sex", "pageNo", "pageSize");
// 校验 token
 tokenService.checkUserLogin(params.getString("token"));
// 根据性别分页查询 Student,查询总数会自动封装到pageDto对象上
QueryStudentSexPageDto pageDto = JSONObject.parseObject(params.toJSONString(), QueryStudentSexPageDto.class);
List<Student> students = studentExtDao.queryBySexWithPage(pageDto);
StudentPageDto studentPageDto = new StudentPageDto();
// 查询总数会自动封装到pageDto对象上
studentPageDto.setTotalSize(pageDto.getTotalSize());
studentPageDto.setStudents(students);
 return ResponseUtil.success(studentPageDto);
Copier après la connexion
Avant la requête de pagination, nous souhaitons importer plus de tests données.

Données de test avant pagination

Vous pouvez constater que la base de données contient actuellement dix données de test, dont six pour les garçons, âgés de 19 à 24 ans. Bon, commençons à appeler l'interface de requête de pagination :

Appelez l'interface de requête de pagination pour renvoyer les résultats

Formatez les données renvoyées :

Les résultats des requêtes de pagination sont triés

C'est la même chose que ce que nous voyons lors de l'interrogation directe de la base de données.

7. Supprimer les données

La dernière étape consiste à supprimer l'interface de données Nous supprimerons les premières données de test.

L'appel de l'interface de suppression renvoie le résultat

Ensuite on vérifie si elle est réellement supprimée.

Requête après suppression

Les données ont été supprimées.

Enfin, le code source du projet est joint : github.com/Qbian61/spring-mvc-mybatis

[Recommandations associées]

1 Vidéo Java gratuite. tutoriel

2. Analyse complète des annotations Java

3 Manuel de développement Java Alibaba

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en 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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!