이 글에서는 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
[관련 추천]
2.위 내용은 Java는 mysql을 작동하기 위해 crud 및 페이징 플러그인을 통합합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!