Heim >Java >javaLernprogramm >Java integriert Crud- und Paging-Plug-Ins für den Betrieb von MySQL

Java integriert Crud- und Paging-Plug-Ins für den Betrieb von MySQL

Y2J
Y2JOriginal
2017-05-10 09:37:201992Durchsuche

In diesem Artikel werden hauptsächlich die detaillierten Schritte der Integration von Mybatis (Crud + Paging-Plugin) für den Betrieb von MySQL vorgestellt

1. xml-Konfiguration

Wir alle wissen, dass das erste, was Sie beim Starten eines Java-EE-Projekts tun müssen, darin besteht, web.xml zu lesen. Ich habe auch die web.xml von Spring MVC ausführlich erklärt Vorheriger Artikel. Wenn Sie verstehen, können Sie den Quellcode des von mir erklärten Projekts auch auf github veröffentlichen stellen Sie es hier vor.

web.xml-Konfiguration

<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>

2. Spring (context.xml)-Kontextkonfiguration

diesesKonfigurationsdatei die zweite Sache ist, die vom Servercontainer gelesen wird. Hier werden der grundlegende Paketpfad, der während des Frühjahrsstarts gescannt wird, der Import von extern konfigurierten Attributdateien und die Datenbank Hier werden auch die Konfiguration, die Integration von Mybatis und Spring, das eingangs erwähnte Mybatis-Datums-Plugin und das Paging-Plugin sowie das Entitätspaket und der Speicherort seiner Mapper-Datei konfiguriert gescannt von mybatis.

context.xml-Konfiguration

<!-- 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>

3. Feder-Controller-Konfiguration

Die Konfiguration hier ist, wo sich der Controller befindet Der Standort und seine unterstützten

Anfragetypen und Kodierungen.

external-servlet.xml-Konfiguration

<!-- 控制器扫描 -->
<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>
Die Konfigurationsinformationen sind die oben genannten drei. Schauen wir uns den spezifischen Code an,

4. Code-Erklärung

1. Java-Code-Erklärung, das Folgende ist nicht sortiert, sondern nur in der im

Editor angezeigten Reihenfolge angeordnet. (Die folgenden Inhalte befinden sich alle im Paket 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 :根据学生性别分页查询接口。
2. Erklärung zu Mybatis mapper.xml (die folgenden Inhalte befinden sich alle im Ordner resources/com/qbian)

common |
 dao |
 StudentDao.xml :对应common.dao.StudentDao接口。
other |
 dao |
 StudentExtDao.xml :对应other.dao.StudentExtDao接口。

5. Funktionsdemonstration

1. Token-Überprüfung

Ich habe den Token hier geschrieben Code Ja, 123456 bedeutet, dass die Verifizierung erfolgreich war. Testen wir es zunächst, indem wir die Datenschnittstelle einfügen und ein falsches Token übergeben, wie unten gezeigt:

Autorisierungstoken-Überprüfung

2, Parameter anfordernÜberprüfung

Werfen wir einen Blick darauf, welche Werte beim Einfügen der Datenschnittstelle überprüft werden müssen.

// 校验请求参数
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();
Dann versuchen wir, das Altersfeld weniger zu übergeben:

Feldüberprüfung anfordern

3. Daten einfügen

Bevor wir Daten einfügen, schauen wir uns an, welche Daten sich in der Datenbank befinden:

Initialisieren Sie die Werte in der Datenbank

Wie Sie dem Bild oben entnehmen können, sind keine Daten in der Datenbank vorhanden. Lassen Sie uns die Einfügeschnittstelle ausführen.

Testen Sie die Einfügeschnittstelle

Werfen wir einen Blick auf die Datenbank:

Nach dem Anruf die Einfügeschnittstelle

Die Datenbank enthält bereits Daten.

4. Daten abfragen

Abfrage gemäß der ID der vorherigen Daten

Abfrageschnittstelle aufrufen

Wir haben auch die Daten abgefragt, die wir gerade eingegeben haben.

5. Daten aktualisieren

Abgefragte Daten aktualisieren:

Update-Schnittstelle aufrufen

Dann fragen wir die Daten erneut ab

Nach der Aktualisierung erneut abfragen

Sie können sehen, dass Geschlecht und Alter sowie das Aktualisierungsdatum aktualisiert wurden ist auch das Neueste.

6. Paging-Abfrage

Werfen wir zunächst einen Blick auf den 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);
Vor der Paging-Abfrage möchten wir weitere Tests importieren Daten.

Testdaten vor der Paginierung

Sie können sehen, dass die Datenbank derzeit zehn Testdaten enthält, darunter sechs für Jungen im Alter von 19 bis 24 Jahren. Okay, beginnen wir mit dem Aufruf der Paging-Abfrageschnittstelle:

Rufen Sie die Paging-Abfrageschnittstelle auf, um die Ergebnisse zurückzugeben

Formatieren Sie die zurückgegebenen Daten:

Die Ergebnisse der Paging-Abfrage werden sortiert

Dies ist das Gleiche, was wir sehen, wenn wir die Datenbank direkt abfragen.

7. Daten löschen

Der letzte Schritt besteht darin, die Datenschnittstelle zu löschen.

Aufruf der Löschschnittstelle gibt das Ergebnis zurück

Anschließend prüfen wir, ob es wirklich gelöscht ist.

Abfrage nach Löschung

Die Daten wurden gelöscht.

Schließlich ist der Quellcode des Projekts beigefügt: github.com/Qbian61/spring-mvc-mybatis

[Verwandte Empfehlungen]

1. Java-kostenloses Video Tutorial

2. Umfassende Analyse von Java-Annotationen

3. Alibaba Java Development Manual

Das obige ist der detaillierte Inhalt vonJava integriert Crud- und Paging-Plug-Ins für den Betrieb von MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn