検索
ホームページJava&#&チュートリアルJava は mysql を操作するために crud とページング プラグインを統合します

この記事では、mybatis (crud + ページング プラグイン) を統合して mysql を操作する Spring mvc の詳細な手順を主に紹介します。必要な友人は参照してください

1. Web.xml の設定

Java eeのプロジェクト起動 まずはweb.xmlを読みます。 Spring mvcのweb.xmlについては前回の記事でも詳しく説明しましたので、分からない方はソースも載せておきます。プロジェクトのコードを解説 githubでも確認できますが、ここでは紹介しません。

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>

2番目、Spring(context.xml)コンテキスト設定

この設定ファイルは、サーバーコンテナによって読み取られる2番目のものと言えます。 Spring が始まるとき スキャンされた基本パッケージのパス、外部で設定された attributes ファイルのインポート、接続する必要があるデータベースの設定、mybatis と spring の統合、mybatis 日付プラグインと前述のページング プラグイン最初の設定もここで構成され、mybatis はエンティティ パッケージとそのマッパー ファイルの場所をスキャンします。

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>

3. Spring コントローラー設定

ここで設定されるのは、コントローラーの場所、リクエスト タイプ 、およびサポートされるエンコーディングです。

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>

設定情報は上記の3つです

4. コードの説明

1.以下では行われません。並べ替えるには、エディタに表示されている順序に説明を並べるだけです。 (以下の内容は全て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. Mybatis Mapper.xmlの説明(以下の内容は全てresources/com/qbianフォルダー配下にあります)

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

5. 機能デモ

1. トークンの検証

ここのコードにトークンを記述しました。123456 は検証が成功したことを意味します。以下に示すように、まずデータ挿入インターフェイスでテストして、間違ったトークンを渡しましょう:

認可トークン検証

2、リクエストパラメータ検証

挿入データに他に何が必要かを見てみましょう。インターフェイス どの値をチェックするか。

// 校验请求参数
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. データを挿入します

データを挿入する前に、データベースにどのようなデータがあるかを見てみましょう:

データベース内の値を初期化します

上の図からわかるように、データベースにはデータがありません。挿入インターフェースを実行してみましょう。

挿入インターフェイスをテストします

データベースを見てみましょう:

挿入インターフェイスを呼び出した後、

データベースにはすでにデータがあります。

4. データのクエリ

前のデータの ID に基づいてクエリを実行します

クエリ インターフェイスを呼び出します

挿入したばかりのデータもクエリしました。

5. データを更新します

クエリされたデータを更新します:

更新インターフェイスを呼び出します

その後、データを再度クエリします

更新後に再度クエリします

性別と年齢が表示されますが更新されており、更新日も最新です。

6. ページング クエリ

まずコードを見てみましょう:

// 校验请求参数
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);

ページング クエリの前に、さらにテスト データをインポートします。

ページネーション前のテスト データ

現在、データベースには 19 歳から 24 歳までの少年向けの 6 つを含む 10 個のテスト データがあることがわかります。さて、ページング クエリ インターフェイスの呼び出しを開始しましょう:

ページング クエリ インターフェイスを呼び出して結果を返します

返されたデータをフォーマットします:

ページ クエリが返す結果の並べ替え

これは、私たちが行ったことと同じです。データベースに直接クエリを実行する場合も同様です。

7. データを削除します

最後のステップは、データインターフェイスを削除することです。最初のテストデータを削除します。

削除インターフェースを呼び出して結果を返します

そして、本当に削除されたかどうかを確認します。

削除後のクエリ

データは削除されました。

最後にプロジェクトのソース コードを添付します: github.com/Qbian61/spring-mvc-mybatis

[関連する推奨事項]

1. Java の無料ビデオ チュートリアル

2. Java アノテーションの包括的な分析

3. Alibaba Java 開発マニュアル

以上がJava は mysql を操作するために crud とページング プラグインを統合しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JVMは、さまざまなプラットフォームでガベージコレクションをどのように管理していますか?JVMは、さまざまなプラットフォームでガベージコレクションをどのように管理していますか?Apr 28, 2025 am 12:23 AM

jvmmanagesgarbagecollectionacrossplatformseftivivivivitybyusagenerationalaphadadadaptingtosandhardwaredefferences.itemployscollectorslikeserial、parallel、cms、andg1、各sutitedfordifferentscenarios

なぜJavaコードは変更せずに異なるオペレーティングシステムで実行できるのですか?なぜJavaコードは変更せずに異なるオペレーティングシステムで実行できるのですか?Apr 28, 2025 am 12:14 AM

Javaは、Javaの「Write and Averywherewhere」という哲学がJava Virtual Machine(JVM)によって実装されているため、変更なしで異なるオペレーティングシステムで実行できます。コンパイルされたJavaバイトコードとオペレーティングシステムの間の仲介者として、JVMはバイトコードを特定のマシン命令に変換し、JVMがインストールされた任意のプラットフォームでプログラムが独立して実行できることを確認します。

Javaプログラムをコンパイルして実行するプロセスを説明し、プラットフォームの独立性を強調します。Javaプログラムをコンパイルして実行するプロセスを説明し、プラットフォームの独立性を強調します。Apr 28, 2025 am 12:08 AM

Javaプログラムの編集と実行は、BytecodeとJVMを通じ​​てプラットフォームの独立性を達成します。 1)Javaソースコードを書き、それをbytecodeにコンパイルします。 2)JVMを使用して、任意のプラットフォームでByteCodeを実行して、コードがプラットフォーム間で実行されるようにします。

基礎となるハードウェアアーキテクチャは、Javaのパフォーマンスにどのように影響しますか?基礎となるハードウェアアーキテクチャは、Javaのパフォーマンスにどのように影響しますか?Apr 28, 2025 am 12:05 AM

Javaのパフォーマンスはハードウェアアーキテクチャと密接に関連しており、この関係を理解することでプログラミング機能を大幅に改善できます。 1)JVMは、CPUアーキテクチャの影響を受けるJITコンピレーションを介して、Java Bytecodeを機械命令に変換します。 2)メモリ管理とゴミ収集は、RAMとメモリバスの速度の影響を受けます。 3)キャッシュとブランチ予測Javaコードの実行を最適化します。 4)マルチスレッドと並列処理がマルチコアシステムのパフォーマンスを改善します。

ネイティブライブラリがJavaのプラットフォームの独立性を破ることができる理由を説明してください。ネイティブライブラリがJavaのプラットフォームの独立性を破ることができる理由を説明してください。Apr 28, 2025 am 12:02 AM

ネイティブライブラリを使用すると、これらのライブラリはオペレーティングシステムごとに個別にコンパイルする必要があるため、Javaのプラットフォームの独立性が破壊されます。 1)ネイティブライブラリはJNIを介してJavaと対話し、Javaが直接実装できない機能を提供します。 2)ネイティブライブラリを使用すると、プロジェクトの複雑さが増し、さまざまなプラットフォームのライブラリファイルの管理が必要です。 3)ネイティブライブラリはパフォーマンスを改善できますが、それらは注意して使用し、クロスプラットフォームテストを実施する必要があります。

JVMはオペレーティングシステムAPIの違いをどのように処理しますか?JVMはオペレーティングシステムAPIの違いをどのように処理しますか?Apr 27, 2025 am 12:18 AM

JVMは、JavanativeInterface(JNI)およびJava Standard Libraryを介してオペレーティングシステムのAPIの違いを処理します。1。JNIでは、Javaコードがローカルコードを呼び出し、オペレーティングシステムAPIと直接対話できます。 2. Java Standard Libraryは統一されたAPIを提供します。これは、異なるオペレーティングシステムAPIに内部的にマッピングされ、コードがプラットフォーム間で実行されるようにします。

Java 9で導入されたモジュール性は、プラットフォームの独立性にどのように影響しますか?Java 9で導入されたモジュール性は、プラットフォームの独立性にどのように影響しますか?Apr 27, 2025 am 12:15 AM

modularitydoesnotdirectlyectlyectjava'splatformindepensence.java'splatformendepenceismaindainededainededainededaindainedaindained bythejvm、butmodularityinfluencesApplucationStructure andmanagement、間接的なインパクチャプラット形成依存性.1)

ByteCodeとは何ですか?また、Javaのプラットフォームの独立性とどのように関係していますか?ByteCodeとは何ですか?また、Javaのプラットフォームの独立性とどのように関係していますか?Apr 27, 2025 am 12:06 AM

bytecodeinjavaisthe intermediaterepresentationthateNablesplatformindepence.1)javacodeis compiledintobytecodestoredin.classfiles.2)thejvminterpretsorcompilesthisbytecodeintomachinecodeatime、

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター