SSM框架使用第五集 - 创建服务
通过配置完配置文件后我们就可以配置Mysql数据库对项目表进行增删查改的操作了
- 创建项目介绍表
Create Table projects(
id int,
title varchar(255),
introduce text,
image_url text,
develop varchar,
author varchar,
add_time datetime
)
- 创建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;
}
- 创建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> {
}
- 通过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>
- 编写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);
}
- 创建Server事务实例
@Service("projectsServer")
//注册事务
@Transactional
public class projectsServerImpl extends ConstomServerImpl<projects>{
//引入Mapper
@Resource
private projectsMapper mapper;
@Override
public CustomMapper<projects> getMapper() {
return mapper;
}
}
- 配置常用通用响应格式
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);
}
}
- 注册项目功能的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;
}
}