Java Web后端--入职技能任务单(plugin表的dao层增删改查)六

       上一篇我们讲到了mybatis的逆向工程,通过配置XML映射MySqll数据关系到java实体类pojo和mapper,当然mapper中还包含了sql语句的xml关系映射文件,本篇,我们就利用上一篇Mybatis逆向工程生成的两个包展开数据的增删改查。


主要实现插件表plugin的dao层coding



一、拷贝pojo和mapper两个package到ssm-web-test项目下


(1)


(2)这个默认的jdk老是窜频道,改了它!




二、为Plugin表的增删改查操作创建dao层(com.appleyk.dao)


(1)创建PluginDao.java




(2)PluginDao.java


package com.appleyk.dao;

import java.util.List;

import com.appleyk.mapper.PluginMapper;
import com.appleyk.pojo.Plugin;
import com.appleyk.pojo.PluginExample;
import com.appleyk.pojo.PluginExample.Criteria;

/**
 * plugin表的增删改查
 * @author Appleyk
 * @date   2017年11月15日13:13:21
 */
public class PluginDao {
   
   //1.增加一条插件信息记录
   public int AddData(PluginMapper pMapper,Plugin plugin){
	  
	 int ret =  pMapper.insert(plugin);
	 if(ret>0){
		 //System.out.println("向plugin表插入一条数据成功!");
	     return 1;
	 }
	 else return 0;
	  
   }
   
   //2.删除一条插件信息记录
   public int DelData(PluginMapper pMapper,int pID){
	   
	 int ret =  pMapper.deleteByPrimaryKey(pID);
	 if(ret>0){
		 //System.out.println("plugin表删除一条数据成功!");
	     return 1;
	 }
	 else return 0;
	  
   }
   
   //3.更改plugin表对应主键id的插件信息,修改keyWord关键字的值
   public int UpdateData(PluginMapper pMapper,int pID,String keyword){
	  
	 PluginExample example = new PluginExample();
	 Criteria updateCriteria = example.createCriteria();
	 updateCriteria.andIdEqualTo(pID); //创建条件
	 List<Plugin> list = pMapper.selectByExample(example);
	 
	 if(list!=null && list.size()>0){
		 Plugin plugin = list.get(0);
	     plugin.setKeyword(keyword);
		 int ret = pMapper.updateByPrimaryKey(plugin);		 
		 return ret ;		
	 }
	 else{
		 return -1 ;
	 }
	  
   }
   
 //4.查询plugin表的所有记录
   public List<Plugin> QueryData(PluginMapper pMapper){
	  
	 PluginExample example = new PluginExample();
	 List<Plugin> list = pMapper.selectByExample(example);
	 
	 if(list!=null && list.size()>0){
		
		 return list ;
		
	 }
	 else{
		 return null ;
	 }
	  
   }
}


dao层写完了,接下来就是应用了,在哪应用呢(任务单里说是test单元测试)?但是实际上,我们不会这样直接写dao层,而是,细化dao层成service和serviceImpl这两部分,当然mapper也是属于dao层的,这里我们只是为了静态测试数据的增删改查,因此,dao层就这样写了。代码我就不做过解释了,真的没什么讲的。


三、Junit单元测试plugin数据层的增删改查功能


(1)创建测试类PluginTest.java




(2)PluginTest.java


import java.util.Date;
import java.util.List;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.appleyk.dao.PluginDao;
import com.appleyk.mapper.PluginMapper;
import com.appleyk.mapper.UsersMapper;
import com.appleyk.pojo.Plugin;
import com.appleyk.pojo.Users;
import com.appleyk.pojo.UsersExample;

/**
 * Plugin表的增删改查测试
 * @author 余坤
 * @date 2017年11月10日:下午4:39:14
 */
public class PluginTest {
      
	 //1、 拿到spring上下文对象  
    private ApplicationContext aContext = null ;//1、 拿到spring上下文对象  
    private PluginMapper pMapper = null;
    
    
    public PluginMapper GetpMapper(){
    	
    	aContext = new ClassPathXmlApplicationContext("classpath:spring-mybatis/spring-mybatis.xml");  
    	//使用spring上下文获得PluginMapper代理实例  实现表plugin的增删改查
        //下面的判断只初始化一次pMapper
    	if(pMapper!=null){
        	return pMapper;
        }
        else{
        	pMapper = aContext.getBean(PluginMapper.class);//拿到pMapper的代理            
            return pMapper;
        }	
    }
    
    @Test  
    public void TestAdd() throws Exception{          
        try{  

          Plugin plugin = new Plugin();
          PluginDao pDao = new PluginDao();
          //这里做静态添加
          
          plugin.setName("WTP");//Eclipse Web Tools Platform(WTP)
          plugin.setType("Java");
          plugin.setIcon(null);
          plugin.setPre("HTML, JavaScript, XML, JSP");
          plugin.setKeyword("wtp");
          plugin.setDescription("支持语法着色,代码提示,代码折叠等,以及其它一堆JavaEE相关的功能。Web开发必备!");
          plugin.setCreatetime(new Date());
          plugin.setuId(1);
          plugin.setFileAddress("F://WTP.rar");
          
          //添加
          int ret = pDao.AddData(GetpMapper(),plugin);
          if(ret>0){
        	  System.out.println("向plugin表插入一条数据成功!");
          }
          else {
			  System.err.println("向plugin表插入一条数据失败!");
		  }
        }  
        catch(Exception ex){  
            ex.printStackTrace();  
        }  
    }  
    
    @Test  
    public void TestDel() throws Exception{          
        try{         
          PluginDao pDao = new PluginDao();
          //这里做静态删除
         
          //删除 注意先执行添加 后执行删除
          int pID = 4;
          int ret = pDao.DelData(GetpMapper(), pID);
          if(ret>0){
        	  System.out.println("plugin表删除主键id="+pID+"对应的的插件记录成功!");
          }
          else {
			  System.err.println("plugin表删除主键id="+pID+"对应的插件记录信息失败!");
		  }
        }  
        catch(Exception ex){  
            ex.printStackTrace();  
        }  
    }  
    
    @Test  
    public void TestUpdate() throws Exception{          
        try{         
          PluginDao pDao = new PluginDao();               
          //这里做静态更新
          //更新 对应的插件id的信息
          int pID = 1; //如果ID不存在 就失败
          
          //假设更新 keyword(关键字)信息
          String keyword = "test22";
          
          int ret = pDao.UpdateData(GetpMapper(), pID, keyword);
          if(ret>0){
        	  System.out.println("plugin表更新主键id="+pID+"对应的的Keyword关键字信息成功!");
          }
          else {
			  System.err.println("plugin表更新主键id="+pID+"对对应的的Keyword关键字信息失败!");
		  }
        }  
        catch(Exception ex){  
            ex.printStackTrace();  
        }  
    } 
  
    
    @Test  
    public void TestQuery() throws Exception{          
        try{         
          PluginDao pDao = new PluginDao();
          //这里无条件查询
          List<Plugin> result = pDao.QueryData(GetpMapper());
          int index = 0;
          if(result!=null){
        	for (Plugin plugin : result) {
				int      id = plugin.getId();
				String name = plugin.getName();
				String description = plugin.getDescription();
				System.out.println(id+","+name+","+description+",index:"+index);
				index++;
			}
          }
        }  
        catch(Exception ex){  
            ex.printStackTrace();  
        }  
    } 
}



(3)测试前,先看一下plugin原有的数据




(4)测试数据插入


A.所有的被@Test注解的方法都采用这种形式进行测试




B.输出插入结果信息



C.验证数据是否已插入到plugin表




D.测试删除




E.测试更新




F.测试查询





大家会有个疑问,这里为什么要





我们看一下,这个spring-mybatis.xml里面是怎么做到的





那么,PluginMapper是个什么鬼呢?


(纠正一下,Mapper是定义增删改查行为的接口,不是Mapper类)


(本篇有误导,请自行忽略,偷笑




我们且看这里





所以说,mybatis的逆向工程,很有意思,如果你不想用mybatis的逆向工程生成简单的增删改查的话,也可以自己写,当然,自己写完全没问题,按照逆向工程生成的文件改就行,而且自己定制,可以扩展更为复杂的增删改查,牺牲的就是时间和人力了。



至此,我们的plugin表的dao层增删改查已经测试完成了,当然,这只是静态的,没有华丽的UI,也没有友好的提示,而且还是控制台的输出,留个作业:


基于plugin的增删改查,写出来用户表users的增删改查。




此刻,我想借用一句广告语结束本篇:


"我们不生产水,我们只是大自然的搬运工。"



下一篇:Java Web后端--入职技能任务单(前台首页布局和展示)七 

vite-plugin-mock 是一个基于 Vite 的插件,用于模拟接口数据,方便前端开发和调试。它可以实现简增删改查操作。下面我将分别介绍各个操作的实现方式。 1. 增加数据:在使用 vite-plugin-mock 时,我们可以在 mock 目录下创建一个 js 文件,然后在其中定义一个路由,指定请求方法和路径。在路由的处理函数中,我们可以通过获取请求的参数,然后将参数作为新的数据存储起来。例如,在处理 POST 请求时,我们可以使用 `ctx.body` 来获取请求体中的参数,然后将参数存储到一个数组或者对象中。 2. 删除数据:通过 vite-plugin-mock,我们可以在路由的处理函数中获取请求参数,然后根据参数中指定的标识符或条件,将对应的数据从存储中删除。例如,处理 DELETE 请求时,可以通过参数中的 id 来确定要删除的数据,并从存储的数组中将其删除。 3. 修改数据:在处理 PUT 或 PATCH 请求时,我们可以通过路由的处理函数获取请求参数,然后根据参数中指定的标识符或条件,找到对应的数据。接着,我们可以对数据进行修改,例如修改某个字段的值,然后将修改后的数据更新到存储中。 4. 查询数据:当处理 GET 请求时,我们可以通过路由的处理函数获取请求参数,然后根据参数中指定的标识符或条件,从存储中查询对应的数据。最后,将查询结果作为响应返回给前端。 总的来说,使用 vite-plugin-mock 可以方便地模拟增删改查操作。我们只需要定义相应的路由和处理函数,然后在函数中根据请求参数操作数据存储即可。这样,前端开发人员可以在开发阶段快速获取和操作模拟的接口数据,提高开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值