ssm项目开发中的小问题第二篇

junit和spring

对dao层、service进行单元测试!
在这里插入图片描述
applicationContext-dao.xml容器上下文

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        https://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        https://www.springframework.org/schema/tx/spring-tx.xsd">

	<!-- 加载数据库连接的属性文件 -->
	<context:property-placeholder  location="classpath:db.properties"/>


    <!-- 配置dbcp2的数据源 数据库连接池-->
	 <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
        destroy-method="close"
        p:driverClassName="com.mysql.cj.jdbc.Driver"
        p:url="${jdbc.url}"
        p:username="root"
        p:password="123456"/>
        
        
    <!--SqlSessionFactory的配置 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
     	<property name="dataSource" ref="dataSource"/>
     	<!--配置mybatis的配置文件  -->
     	<property name="configLocation" value="classpath:mybatis.xml"/>
    </bean>
    
    <!--mapper的扫描器-->
    <bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    	<!-- 自动生成com.mhy.mapper下所有接口的实现类对象 -->
    	<property name="basePackage" value="com.iflytek.onlinepro.mapper"/>
    </bean>
</beans>

Springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd
         http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

	<!-- 开启springmvc的注解驱动 -->
	<mvc:annotation-driven />
		
	<!-- 开启组件扫描 -->
	<context:component-scan base-package="com.iflytek.onlinepro"/>
	
	<!--    添加MVC 加载静态文件 css、图片等-->
	<mvc:default-servlet-handler/>
	<mvc:resources location="/static/js/" mapping="/js/**"/>
	<mvc:resources location="/static/" mapping="/jquery-3.6.0.js"/>
	<mvc:resources location="/static/" mapping="/jquery-3.6.0.min.js"/>
    <mvc:resources location="/static/image/" mapping="/image/**"/>
    <mvc:resources location="/static/images/" mapping="/images/**"/>
    <mvc:resources location="/static/bootstrap-4.6.1-dist/css" mapping="/css/**" />
    <mvc:resources location="/static/bootstrap-4.6.1-dist/js" mapping="/js/**" />
	
	<!-- springmvc的全局异常处理 -->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
       <!--   默认的异常处理页面 -->
    	<property name="defaultErrorView" value="error.jsp"/>
   </bean>
   
   <!-- 配置上传的视图解析器 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	    <!-- 设置允许上传的最大的文件的大小  : 最大1M-->
	    <property name="maxUploadSize">
	        <value>1048576</value>
	    </property>
	</bean>
</beans>

逻辑分页与物理分页

逻辑分页:依赖于代码。先查询除所有的数据,在根据代码块的所需筛选出合适的数据进行分页。
物理分页:依赖于数据库。MYSQL数据库提供的关键字limit,程序猿只需要编写带有关键字的sql语句,数据库返回的数据就是分页结果。
RowBound属于逻辑分页(内存分页),pageHelper属于物理分页。

  1. 添加依赖
<!-- 分页依赖 -->
		<dependency>
		    <groupId>com.github.pagehelper</groupId>
		    <artifactId>pagehelper</artifactId>
		    <version>5.2.0</version>
		</dependency>
		<dependency>
		    <groupId>com.github.jsqlparser</groupId>
		    <artifactId>jsqlparser</artifactId>
		    <version>4.0</version>
		</dependency>
  1. 配置pagehelper
    可以在Spring的配置xml中,也可以配置在mybatis的配置中,因为它相当于一个插件。
  <plugins>
		<plugin interceptor="com.github.pagehelper.PageInterceptor">

			<!-- reasonable:分页合理化参数,默认值为false。
			当该参数设置为 true 时,pageNum<=0 时会查询第一页,
			 pageNum>pages(超过总页数时),会查询最后一页。默认false 时,
			 直接根据参数进行查询。 -->
			 <!-- 通俗的讲就是在最后一页如果点击下一页(或者说是切换到下一页)
			 就会回到首页 -->
			<property name="reasonable" value="true"/>
			
			<!-- 使用下面的方式配置参数,后面会有所有的参数介绍,可以不写参数-->
			<!-- 这个是参数演示,不填参数需要删除-->
        	<!-- <property name="param1" value="value1"/> -->
        	
		</plugin>
	</plugins>
  1. 直接用
//查询所有人员
	@RequestMapping("/findAllUserAndRole.do")
	public @ResponseBody PageInfo<User> findAllUsers(@RequestParam(required = true,defaultValue = "1") Integer page) throws Exception{
		PageHelper.startPage(page, 8);
		List<User> users = userService.findAllUsers();
		PageInfo<User> pageinfo = new PageInfo<User>(users);
		return pageinfo;
	}

在这里插入图片描述

	<!-- 底部- begin -->
	<div style="margin-top:25px;">
		<nav aria-label="Page navigation example">
		  <ul class="pagination justify-content-center">
			<li class="page-item"><a class="page-link" href="javascript:gotoFirstPage()">首页</a></li>
			<li class="page-item"><a class="page-link" href="javascript:gotoPrePage()">上一页</a></li>
			<li class="page-item">
				<a class="page-link" href="javascript:;">
					<span id="curpage"></span>
					/
					<span id="tpage"></span>
				</a>
			</li>
			<li class="page-item"><a class="page-link" href="javascript:gotoNextPage()">下一页</a></li>
			<li class="page-item"><a class="page-link" href="javascript:gotoLastPage()">末页</a></li>
		  </ul>
		</nav>
	</div>
//分页函数
  //首页
  function gotoFirstPage(){
	  findAllUser(1); 
  }
 
//下一页
 function gotoNextPage(){
	 var nextpage = parseInt($("#curpage").text()) + 1	 
	 findAllUser(nextpage); 
  }
//上一页
 function gotoPrePage(){
	 var prepage = parseInt($("#curpage").text()) - 1	
	 findAllUser(prepage); 
	  
 }
//末页
 function gotoLastPage(){
	  var maxpage = $("#tpage").text()
	  findAllUser(maxpage); 
 }
 
function findAllUser(page){
	document.getElementById("userdata").innerHTML = "";
	//页面加载完成,完成ajax的异步交互,请求findAllProject.do,将数据渲染到页面中
	$.ajax({
		url:"findAllUserAndRole.do",
		type:"post",
		data:{"page":page},
		success:function(pageinfo){
			//获取后台返回的集合数据
			var users = pageinfo.list;
			//获取当前页
			var curpage = pageinfo.pageNum;
			//获取总页数
			var tpage = pageinfo.pages;
			$("#curpage").text(curpage);
			$("#tpage").text(tpage);
			
			
			for(var i = 0;i< users.length;i++){
				var user = users[i] ;
				//将user转换成json字符串
				var userstr = JSON.stringify(user)
				if(user.role.rid == 1){
					//创建tr对象
					var trobj = "<tr style='color: #ffc107'><td>"+ user.uid + "</td><td>"+user.uaccount+"</td><td>" +user.uname + "</td><td>"+user.role.rname+"</td><td>" +
					user.email +"</td> <td> <button class='btn btn-warning btn-sm' οnclick='updateUser("+userstr+")' >修改</button> &nbsp;&nbsp;&nbsp;"+
					    " <button class='btn btn-danger btn-sm' οnclick='deleteUser("+ user.uid+")'>删除</button></td></tr> ";
				}
				else{
					//创建tr对象
					var trobj = "<tr><td>"+ user.uid + "</td><td>"+user.uaccount+"</td><td>" +user.uname + "</td><td>"+user.role.rname+"</td><td>" +
					user.email +"</td> <td> <button class='btn btn-warning btn-sm' οnclick='updateUser("+userstr+")' >修改</button> &nbsp;&nbsp;&nbsp;"+
					    " <button class='btn btn-danger btn-sm' οnclick='deleteUser("+ user.uid+")'>删除</button></td></tr> ";
				}
				
				//将tr对象添加tbody中
				$("#userdata").append(trobj);
			}
		},
		error:function(){
			alert("服务器端错误,请检查!");
		}
	});
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值