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
dieses<🎜 Man kann sagen, dass die >Konfigurationsdatei 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ütztenAnfragetypen 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>
4. Code-Erklärung
1. Java-Code-Erklärung, das Folgende ist nicht sortiert, sondern nur in der imcommon | 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 :根据学生性别分页查询接口。
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üfung2, 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();
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 DatenbankWie 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ügeschnittstelleWerfen wir einen Blick auf die Datenbank: Nach dem Anruf die EinfügeschnittstelleDie Datenbank enthält bereits Daten.
4. Daten abfragen
Abfrage gemäß der ID der vorherigen DatenAbfrageschnittstelle aufrufenWir haben auch die Daten abgefragt, die wir gerade eingegeben haben.
5. Daten aktualisieren
Abgefragte Daten aktualisieren: Update-Schnittstelle aufrufenDann fragen wir die Daten erneut abNach 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);
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!