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