SSM框架使用第五集 - 创建服务

SSM框架使用第五集 - 创建服务

通过配置完配置文件后我们就可以配置Mysql数据库对项目表进行增删查改的操作了

  1. 创建项目介绍表
	Create Table projects(
		id int,
		title varchar(255),
		introduce text,
		image_url text,
		develop varchar,
		author varchar,
		add_time datetime
	)
  1. 创建projects的entity文件
import com.fasterxml.jackson.annotation.JsonFormat;  
  
import java.util.Date;  
  
public class projects {  
	public Integer id;  
	public String title;  
	public String introduce;  
	public String image_url;  
	public String develop;  
	public String author;  
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")  
	public Date add_time;  
}
  1. 创建DAO数据接口文件
public interface CustomMapper<Entity> {  
    //找到所有  
  public List<Entity> findAll();  
  //增加实体  
  public void add(Entity data);  
  //删除实体  
  public void delete(Entity data);  
  //找到一个实体根据其id  
  public Entity findItemById(int id);  
  //更新实体  
  public void update(Entity data);  
  //改变实体ID  
  public void changeId(idObject id);  
}

projects接口继承通用增删查改接口

public interface projectsMapper extends CustomMapper<projects> {  
}
  1. 通过DAO的方法和Entity实体编写Mapper映射
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
<!--引入DAO接口方法-->
<mapper namespace="cn.cenita.dao.projectsMapper">
	<!--引入实体并且编写找到所有的方法-->
	<select id="findAll" resultType="cn.cenita.entity.projects">  
	 SELECT * from projects ORDER BY add_time desc  
	</select>
	<!--编写增加的SQL方法-->
	<insert id="add" parameterType="cn.cenita.entity.projects" >  
	 INSERT INTO projects  
	       (title,introduce,image_url,develop,author,add_time)  
	       values  
	       (#{title},#{introduce},#{image_url},#{develop},#{author},#{add_time})  
	</insert>  
	<!--编写删除方法-->
	<delete id="delete" parameterType="cn.cenita.entity.projects">  
	DELETE FROM projects WHERE id=#{id}  
	</delete>  
	<!--编写根据ID找到实体的方法-->
	<select id="findItemById" parameterType="int" resultType="cn.cenita.entity.projects">  
	 SELECT * from projects where id=#{id}  
	</select>  
	<!--编写更新方法-->
	<update id="update" parameterType="cn.cenita.entity.projects">  
	 UPDATE projects  
	       SET title=#{title},introduce=#{introduce},image_url=#{image_url},develop=#{develop}  
	       ,author=#{author},add_time=#{add_time}  
	       Where id=#{id}  
	</update>  
</mapper>
  1. 编写Server接口注册事务
public interface CustomServer<Server> {  
	public List<Server> findAll();  
	public void add(Server data);  
	public void delete(Server data);  
	public Server findItemById(int id);  
	public void update(Server data);  
	public void changeId(idObject id);  
}
  1. 创建Server事务实例
@Service("projectsServer")  
//注册事务
@Transactional  
public class projectsServerImpl extends ConstomServerImpl<projects>{  
  //引入Mapper
  @Resource  
  private projectsMapper mapper;  
  @Override  
  public CustomMapper<projects> getMapper() {  
        return mapper;  
  } 
}
  1. 配置常用通用响应格式
public class respond {  
    private Map<String,Object> init(String msg,Object obj){  
        Map<String,Object> result = new HashMap<String, Object>();  
		result.put("message",msg);  
		result.put("data",obj);  
		return result;  
	}  
	public Map<String,Object> OK(Object obj){  
		return init("ok",obj);  
	}  
	public Map<String,Object> Error(Object obj){  
		return init("error",obj);  
	}  
}
  1. 注册项目功能的Controller实例
public abstract class CustomController<Entity> {
  //获得事务
  protected abstract CustomServer getServer();  
  @Resource  
  protected respond respond;  
  
  @RequestMapping("/")  
  @ResponseBody  
  public Object findAll(){  
      return respond.OK(getServer().findAll());  
  }  
  
  @RequestMapping(value = "/findOne")  
  @ResponseBody  
  public Object findOne(int id){  
      return respond.OK(getServer().findItemById(id));  
  }  
  
  @RequestMapping(value = "/add",method = RequestMethod.POST)  
  @ResponseBody  
  public Object add(@RequestBody Entity note){  
        getServer().add(note);  
	 return respond.OK("增加成功");  
  }  
  
  @RequestMapping(value = "/remove",method = RequestMethod.POST)  
  @ResponseBody  
  public Object remove(@RequestBody Entity note){  
        getServer().delete(note);  
	 return respond.OK("删除成功");  
  }  
  
  @RequestMapping(value = "/update",method = RequestMethod.POST)  
  @ResponseBody  
  public Object update(@RequestBody Entity note){  
        getServer().update(note);  
	 return respond.OK("更新成功");  
  }  
  
  @RequestMapping(value = "/changeId",method = RequestMethod.POST)  
  @ResponseBody  
  public Object changeId(@RequestBody idObject idobj){  
        getServer().changeId(idobj);  
	 return respond.OK("更新成功");  
  }  
}

注册完通用增删查改的Controller后配置项目实例Controller

@Controller  
@RequestMapping("/projects")  
public class projectsController extends CustomController<projects> {  
    @Resource  
  private CustomServer<projects> projectsServer;  
  @Override  
  protected CustomServer getServer() {  
        return projectsServer;  
  }  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值