码迷,mamicode.com
首页 > 编程语言 > 详细

以MyBatis+SpringMVC3.0实现的,借鉴了Hibernate设计思想,采用封装、抽象、继承的设计思想,做到了数据与相应的操作的高内聚低耦合的实现

时间:2015-04-22 18:27:47      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:springmvc   框架   

QQ:1138789752

Email.java类:

package com.lmc.ink.entity.seo;
import com.lmc.ink.entity.IEntity;
/**
 * 推广邮箱表(s_email)实体类
 * @author lmc
 * */
public class Email extends IEntity {
	/**
	 * 唯一标识
	 * */
	public static final long serialVersionUID = 537132705L;
	/**
	 * 主键
	 * 长度20位
	 * 不为空
	 * 备注:自增长
	 * */
	private Long id;
	/**
	 * 邮箱账户
	 * 长度40位
	 * 不为空
	 * 备注:唯一约束
	 * */
	private String accout;
	/**
	 * 推广状态
	 * 长度1位
	 * 不为空
	 * 备注:有效|无效|已用(1|2|3),默认为1
	 * */
	private Integer state;
	/**
	 * 构造方法
	 * */
	public Email() {
		super("s_email");
	}
	/**
	 * 获取主键
	 * 长度20位
	 * 不为空
	 * 备注:自增长
	 * @return Long 主键
	 * */
	public Long getId() {
		return id;
	}
	/**
	 * 设置主键
	 * 长度20位
	 * 不为空
	 * 备注:自增长
	 * @param id 主键
	 * @return String id
	 * */
	public String setId(Long id) {
		if(id!=null){
			this.id = id;
		}
		return "id";
	}
	/**
	 * 获取邮箱账户
	 * 长度40位
	 * 不为空
	 * 备注:唯一约束
	 * @return String 邮箱账户
	 * */
	public String getAccout() {
		return accout;
	}
	/**
	 * 设置邮箱账户
	 * 长度40位
	 * 不为空
	 * 备注:唯一约束
	 * @param accout 邮箱账户
	 * @return String accout
	 * */
	public String setAccout(String accout) {
		if(!super.xCheck(accout)){
			this.accout = accout;
		}
		return "accout";
	}
	/**
	 * 获取推广状态
	 * 长度1位
	 * 不为空
	 * 备注:有效|无效|已用(1|2|3),默认为1
	 * @return Integer 推广状态
	 * */
	public Integer getState() {
		return state;
	}
	/**
	 * 设置推广状态
	 * 长度1位
	 * 不为空
	 * 备注:有效|无效|已用(1|2|3),默认为1
	 * @param state 推广状态
	 * @return String state
	 * */
	public String setState(Integer state) {
		if(state!=null){
			this.state = state;
		}
		return "state";
	}
}


IService.java接口:

package com.lmc.ink.service;
import java.util.List;
import com.lmc.ink.entity.IEntity;
/**
 * 业务逻辑类父接口
 * @author lmc
 * @version 2015-04-08 16:47:41
 * */
public interface IService<T extends IEntity> {
	/**
	 * 调试标志
	 * */
	public static final boolean debug = true;
	/**
	 * 输处调试信息
	 * @param en 实体对象
	 * @param error 错误信息
	 * */
	public void debug(T en, String error);
	/**
	 * 保存记录
	 * @param en 实体对象
	 * @return boolean 操作结果
	 * */
	public boolean save(T en);
	/**
	 * 按主键删除记录
	 * @param en 实体对象
	 * @return boolean 操作结果
	 * */
	public boolean drop(T en);
	/**
	 * 按例删除记录
	 * @param en 实体对象
	 * @return int 操作结果
	 * */
	public int recycle(T en);
	/**
	 * 更新记录(整体)
	 * @param en 实体对象
	 * @return boolean 操作结果
	 * */
	public boolean replace(T en);
	/**
	 * 更新记录(局部)
	 * @param en 实体对象
	 * @return boolean 操作结果
	 * */
	public boolean modify(T en);
	/**
	 * 按键加载记录
	 * @param en 实体对象
	 * @return T 实体对象
	 * */
	public T get(T en);
	/**
	 * 按例查询记录
	 * @param en 实体对象
	 * @return List 对象集合
	 * */
	public List<T> list(T en);
	/**
	 * 按例统计记录
	 * @param en 实体对象
	 * @return long 统计数
	 * */
	public long sum(T en);
}

EmailService接口:

package com.lmc.ink.service.seo;
import com.lmc.ink.service.IService;
import com.lmc.ink.entity.seo.Email;
/**
 * 推广邮箱表(s_email)业务逻辑类接口
 * @author lmc
 * @version 2015-04-18 10:51:05
 * */
public interface EmailService extends IService<Email> {}

EmailService接口实现:

package com.lmc.ink.service.seo.impl;
import java.util.List;
import com.lmc.ink.dao.seo.EmailDao;
import com.lmc.ink.data.Laws;
import com.lmc.ink.entity.seo.Email;
import com.lmc.ink.service.seo.EmailService;
/**
 * 推广邮箱表(s_email)业务逻辑类接口
 * @author lmc
 * @version 2015-04-18 10:51:05
 * */
public class EmailServiceImpl implements EmailService {
	private EmailDao emailDao;
	public void setEmailDao(EmailDao emailDao) {
		this.emailDao = emailDao;
	}
	public void debug(Email en, String error) {
		if(en!=null){
			en.setXerror(error);
		}
		if(debug){
			System.err.println("【"+this.getClass().getName()+"】"+error);
		}
	}
	public boolean save(Email en) {
		try{
			if(en==null){
				this.debug(null,"参数为空");
				return false;
			}
			if(en.getAccout()==null){
				this.debug(en,en.setAccout(null)+"为空");
				return false;
			}
			if(en.getState()!=null){
				if(!Laws.legal(Laws.SEO,en.getState())){
					this.debug(en,en.setState(null)+"非法");
					return false;
				}
			}else{
				en.setState(1);
			}
			return emailDao.insert(en)>0;
		}catch(Exception e){
			this.debug(en,e.getMessage());
			e.printStackTrace();
		}
		return false;
	}
	public boolean drop(Email en) {
		try{
			if(en==null){
				this.debug(null,"参数为空");
				return false;
			}
			if(en.getId()==null){
				this.debug(en,en.setId(null)+"为空");
				return false;
			}
			return emailDao.delete(en)>0;
		}catch(Exception e){
			this.debug(en,e.getMessage());
			e.printStackTrace();
		}
		return false;
	}
	public int recycle(Email en) {
		try{
			if(en==null){
				this.debug(null,"参数为空");
				return 0;
			}
			return emailDao.remove(en);
		}catch(Exception e){
			this.debug(en,e.getMessage());
			e.printStackTrace();
		}
		return 0;
	}
	public boolean replace(Email en) {
		try{
			if(en==null){
				this.debug(null,"参数为空");
				return false;
			}
			if(en.getId()==null){
				this.debug(en,en.setId(null)+"为空");
				return false;
			}
			if(en.getState()==null||!Laws.legal(Laws.SEO,en.getState())){
				this.debug(en,en.setState(null)+"非法");
				return false;
			}
			return emailDao.merge(en)>0;
		}catch(Exception e){
			this.debug(en,e.getMessage());
			e.printStackTrace();
		}
		return false;
	}
	public boolean modify(Email en) {
		try{
			if(en==null){
				this.debug(null,"参数为空");
				return false;
			}
			if(en.getId()==null){
				this.debug(en,en.setId(null)+"为空");
				return false;
			}
			if(en.getState()!=null&&!Laws.legal(Laws.SEO,en.getState())){
				this.debug(en,en.setState(null)+"非法");
				return false;
			}
			return emailDao.update(en)>0;
		}catch(Exception e){
			this.debug(en,e.getMessage());
			e.printStackTrace();
		}
		return false;
	}
	public Email get(Email en) {
		try{
			if(en==null){
				this.debug(null,"参数为空");
				return null;
			}
			if(en.getId()==null){
				this.debug(en,en.setId(null)+"为空");
				return null;
			}
			return emailDao.load(en);
		}catch(Exception e){
			this.debug(en,e.getMessage());
			e.printStackTrace();
		}
		return null;
	}
	public List<Email> list(Email en) {
		try{
			if(en==null){
				this.debug(null,"参数为空");
				return null;
			}
			return emailDao.find(en);
		}catch(Exception e){
			this.debug(en,e.getMessage());
			e.printStackTrace();
		}
		return null;
	}
	public long sum(Email en) {
		try{
			if(en==null){
				this.debug(null,"参数为空");
				return 0;
			}
			return emailDao.count(en);
		}catch(Exception e){
			this.debug(en,e.getMessage());
			e.printStackTrace();
		}
		return 0;
	}
}

测试代码:

package com.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.lmc.ink.entity.seo.Email;
import com.lmc.ink.service.seo.EmailService;
public class _Email {
	public static void main(String[] args) throws Exception {
		ApplicationContext act = new ClassPathXmlApplicationContext("applicationContext.xml");
		EmailService service = act.getBean("emailService",EmailService.class);
		//【按例查询与按例统计举例】
		Email en = new Email();
		//设置等价查询参数,以AND连接执行:id=1
		en.setId(1L);
		//设置模糊查询参数,%与_字符匹配,以AND链接执行:accout like '%1138789752@qq.com'
		en.setAccout("%1138789752@qq.com");
		//设置模糊查询参数,%与_字符匹配,以AND链接执行:accout like '%1138789752_'
		en.setAccout("%1138789752_");
		//设置范围查询参数,以AND连接执行:id = 1
		en.setXscope(true,en.setId(null),"=",1L);
		//设置范围查询参数,以AND连接执行:id != 1
		en.setXscope(true,en.setId(null),"!=",1L);
		//设置范围查询参数,以OR连接执行:accout like '%1138789752@qq.com'
		en.setXscope(false,en.setAccout(null),"like","%1138789752@qq.com");
		//设置范围查询参数,以OR连接执行:accout like '%1138789752_'
		en.setXscope(false,en.setAccout(null),"like","%1138789752_");
		//设置范围查询参数,以OR连接执行:id > 2
		en.setXscope(false,en.setId(null),">",2L);
		//设置范围查询参数,以OR连接执行:id >= 2
		en.setXscope(false,en.setId(null),">=",2L);
		//设置范围查询参数,以AND连接执行:id < 2
		en.setXscope(true,en.setId(null),"<",2L);
		//设置范围查询参数,以AND连接执行:id <= 2
		en.setXscope(true,en.setId(null),"<=",2L);
		//设置非空查询参数,以OR连接执行:accout is null
		en.setXsky(false,en.setAccout(null),true);
		//设置in查询参数,以AND连接执行:id in (1,2,3);
		en.setXchain(true,en.setId(null),new Long[]{1L,2L,3L});
		//设置分组字段,执行:group by state,group by id
		en.setXgroup(en.setState(null));
		en.setXgroup(en.setId(null));
		//获取按例查询总记录数
		long total = service.sum(en);
		//设置分页总记录数
		en.setXtotal(total);
		//设置分页总记录数
		en.setXtotal(10000L);
		//设置分页每页条数,此处设置为每页100条
		en.setXsize(100L);
		//设置分页当前页,此处设置取第2页
		en.setXnow(2L);
		//执行案例查询,返回值为List<Email>
		service.list(en);
		
		//【按键加载记录】
		en = new Email();
		en.setId(1L);
		en = service.get(en);
		System.out.println(en==null);
		
		//【添加记录】
		//实例化对象并设值
		en = new Email();
		en.setAccout("1138789752@qq.com");
		en.setState(2);
		//执行添加记录,返回值为boolean
		System.out.println(service.save(en));
		//执行添加记录后获取对象保存到数据库的主键值(主键为自增长时)
		System.err.println(en.getId());
		
		//【删除记录】
		//执行按主键删除,返回值为boolean
		en = new Email();
		en.setId(1L);
		System.out.println(service.drop(en));
		
		//【按例删除记录】
		//此处执行delete from s_email where account = '1138789752@qq.com' and state = 2
		en = new Email();
		en.setAccout("1138789752@qq.com");
		en.setState(2);
		System.out.println(service.recycle(en));
		//此处没有参数,相当于清空数据库表,因此应慎用按例删除记录
		System.out.println(service.recycle(new Email()));
		
		//【更新记录】
		en = new Email();
		en.setId(1L);
		en.setAccout("123456");
		//(局部更新)此处执行:update s_email set accout = '123456' where id = 1
		System.out.println(service.modify(en));
		en.setState(1);
		//(整体更新)此处执行:update s_email set accout = '123456',state = 1 where id = 1
		System.out.println(service.replace(en));
		
		//【输出调试信息】
		//此处被Service类内部调用
		service.debug(en,"错误信息");
		
		//以上以MyBatis+SpringMVC3.0实现的,借鉴了Hibernate设计思想,
		//采用封装、抽象、继承的设计思想,做到了数据与相应的操作的高内聚低耦合的实现
	}
}


以MyBatis+SpringMVC3.0实现的,借鉴了Hibernate设计思想,采用封装、抽象、继承的设计思想,做到了数据与相应的操作的高内聚低耦合的实现

标签:springmvc   框架   

原文地址:http://blog.csdn.net/lmc1138789752/article/details/45195965

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!