>  기사  >  Java  >  Java는 mysql을 작동하기 위해 crud 및 페이징 플러그인을 통합합니다.

Java는 mysql을 작동하기 위해 crud 및 페이징 플러그인을 통합합니다.

Y2J
Y2J원래의
2017-05-10 09:37:201891검색

이 글에서는 mybatis(crud + paging 플러그인)를 통합한 Spring mvc의 세부 단계를 주로 소개합니다. 필요한 친구들은 참고하시면 됩니다

1. xml 구성

Java ee 프로젝트를 시작할 때 가장 먼저 해야 할 일은 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) 컨텍스트 구성

구성 파일은 서버 컨테이너가 읽는 두 번째 파일이라고 할 수 있습니다. 여기서는 Spring 시작 시 스캔한 기본 패키지 경로와 외부에서 구성된 속성 파일 가져오기 및 구성을 설명합니다. 연결해야 할 데이터베이스의 구성, 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. 스프링 컨트롤러 구성

여기서 컨트롤러의 위치를 ​​구성하고, 지원되는 요청 유형 및 인코딩.

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>

구성 정보는 위 세 가지입니다. 다음으로 구체적인 코드를 살펴보겠습니다.

four , 코드 설명

1. Java 코드 설명은 정렬되지 않고 에디터에 표시된 순서대로 정렬됩니다. (아래 내용은 모두 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();

그럼 더 적은 연령 필드를 전달해 보겠습니다.

필드 확인 요청

데이터 삽입

데이터를 삽입하기 전에 데이터베이스에 어떤 데이터가 있는지 살펴보겠습니다.

데이터베이스의 값을 초기화합니다

위에서 그림에서 볼 수 있듯이 데이터베이스에는 데이터가 없습니다. 삽입 인터페이스를 실행해 보겠습니다.

삽입 인터페이스 테스트

데이터베이스를 살펴보겠습니다.

호출 후 삽입 인터페이스

데이터베이스에 이미 데이터가 있습니다.

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. 튜토리얼

2.

Java 주석 종합 분석

Alibaba Java 개발 매뉴얼

위 내용은 Java는 mysql을 작동하기 위해 crud 및 페이징 플러그인을 통합합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.