上一篇我们讲到了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的增删改查。
此刻,我想借用一句广告语结束本篇:
"我们不生产水,我们只是大自然的搬运工。"