SSM框架整合完成一个简单的CRUD
写在前面的话
SSM框架整合开发会大幅度的提高我们的开发效率。我这里准备写一套SSM整合之后实现的单表的CRUD的案例,希望给刚刚学习SSM框架的小伙伴一些帮助。
也欢迎给位大神给出指点 ^_^。
tips:后面有源码下载地址。
欧耶!直接开打吧
你需要准备的武器
学习过Spring,SpringMVC和MyBatis框架
会整合SSM框架,不会的可以参考我的这一篇文章:juejin.cn/post/706888…
要有一份对技术不断追求的心
要热爱我的民族,热爱我们的祖国^_^
酒就不开了,直接开整吧
搭建一个SSM框架整合的web项目。
在resources中添加数据源配置db.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/bank?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8 jdbc.username=root jdbc.password=复制代码
[1]数据表实体类
准备一个数据表:
-- 商品表 -- create table item( item_id varchar(20) not null primary key, item_title varchar(300) not null, item_desc varchar(500) , category_id int, create_time datetime not null, modify_time datetime not null, status int default '1' ); -- 来个几条数据吧 -- insert into item values('100010428315','Redmi K40 骁龙870 三星AMOLED 120Hz高刷直屏 4800万高清三摄 8GB+128GB 亮黑','【品质好物】4800万高清三摄相机,骁龙870【note10pro火热抢购中】查看>',1,'2022-02-26 15:26:23','2022-02-26 15:26:23',1); insert into item values('100013102509','荣耀Play5T Pro 6400万双摄 6.6英寸全视屏 22.5W超级快充 4000mAh大电池','【限时优惠400元】八核处理器,6400万超清双摄,配备22.5W超级快充~荣耀60SE新品上市查看>',1,'2022-02-26 15:26:23','2022-02-26 15:26:23',1); insert into item values('10031528454992','小米 红米 Redmi Note10 5G 游戏智能5G手机 新品Redmi手机 4G+128G月影银 官方标配','【小米直供|现货当天发】【低至949起】赠:90天碎屏险+钢化膜+品质音乐耳机+运费险!【Note11系列新品上市】查看>',1,'2022-02-26 15:26:23','2022-02-26 15:26:23',1);复制代码
根据数据库表,添加实体类:
package com.qidian.demo.pojo; import java.util.Date; import java.io.Serializable; /** * @author 戴着假发的程序员 */ public class Item implements Serializable { private static final long serialVersionUID = -67170620160284587L; private String itemId; private String itemTitle; private String itemDesc; private Integer categoryId; private Date createTime; private Date modifyTime; private Integer status; // setter和getter我就省略了,太占空间了 }复制代码
[2]Mapper开发
在你的mapper包中添加ItemMapper接口和ItemMaper.xml文件
ItemMapper接口内容:
package com.qidian.demo.mapper; import com.qidian.demo.pojo.Item; import java.util.List; /** * @author 戴着假发的程序员 */ public interface ItemMapper { /** * 通过ID查询单条数据 * @param itemId 主键 * @return 实例对象 */ Item selectById(String itemId); /** * 查询全部 * @return 对象列表 */ List<Item> selectAll(); /** * 通过实体作为筛选条件查询 * @param item 实例对象 * @return 对象列表 */ List<Item> selectList(Item item); /** * 新增数据 * @param item 实例对象 * @return 影响行数 */ int insert(Item item); /** * 修改数据 * @param item 实例对象 * @return 影响行数 */ int update(Item item); /** * 通过主键删除数据 * @param itemId 主键 * @return 影响行数 */ int deleteById(String itemId); }复制代码
ItemMapper.xml文件内容:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.qidian.demo.mapper.ItemMapper"> <!-- 结果集 --> <resultMap type="com.qidian.demo.pojo.Item" id="ItemMap"> <result property="itemId" column="item_id" jdbcType="VARCHAR"/> <result property="itemTitle" column="item_title" jdbcType="VARCHAR"/> <result property="itemDesc" column="item_desc" jdbcType="VARCHAR"/> <result property="categoryId" column="category_id" jdbcType="INTEGER"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="modifyTime" column="modify_time" jdbcType="TIMESTAMP"/> <result property="status" column="status" jdbcType="INTEGER"/> </resultMap> <!-- 基本字段 --> <sql id="Base_Column_List"> item_id, item_title, item_desc, category_id, create_time, modify_time, status </sql> <!-- 查询单个 --> <select id="selectById" resultMap="ItemMap"> select <include refid="Base_Column_List" /> from item where item_id = #{itemId} </select> <!-- 查询全部 --> <select id="selectAll" resultMap="ItemMap"> select <include refid="Base_Column_List" /> from item </select> <!--通过实体作为筛选条件查询--> <select id="selectList" resultMap="ItemMap"> select <include refid="Base_Column_List" /> from item <where> <if test="itemId != null and itemId != ''"> and item_id = #{itemId} </if> <if test="itemTitle != null and itemTitle != ''"> and item_title = #{itemTitle} </if> <if test="itemDesc != null and itemDesc != ''"> and item_desc = #{itemDesc} </if> <if test="categoryId != null"> and category_id = #{categoryId} </if> <if test="createTime != null"> and create_time = #{createTime} </if> <if test="modifyTime != null"> and modify_time = #{modifyTime} </if> <if test="status != null"> and status = #{status} </if> </where> </select> <!-- 新增所有列 --> <insert id="insert" keyProperty="itemId" useGeneratedKeys="true"> insert into item(item_id, item_title, item_desc, category_id, create_time, modify_time, status) values ( #{itemId}, #{itemTitle}, #{itemDesc}, #{categoryId}, #{createTime}, #{modifyTime}, #{status}) </insert> <!-- 通过主键修改数据 --> <update id="update"> update item <set> <if test="itemTitle != null and itemTitle != ''"> item_title = #{itemTitle}, </if> <if test="itemDesc != null and itemDesc != ''"> item_desc = #{itemDesc}, </if> <if test="categoryId != null"> category_id = #{categoryId}, </if> <if test="createTime != null"> create_time = #{createTime}, </if> <if test="modifyTime != null"> modify_time = #{modifyTime}, </if> <if test="status != null"> status = #{status}, </if> </set> where item_id = #{itemId} </update> <!--通过主键删除--> <delete id="deleteById"> delete from item where item_id = #{itemId} </delete> </mapper>复制代码
[3]service开发
在你的service包中添加ItemService接口和ItemServicImpl实现类:
ItemService接口内容:
package com.qidian.demo.service; import com.qidian.demo.pojo.Item; import java.util.List; /** * @author 戴着假发的程序员 */ public interface ItemService { /** * 通过ID查询单条数据 * @param itemId 主键 * @return 实例对象 */ Item selectById(String itemId); /** * 查询全部 * @return 对象列表 */ List<Item> selectAll(); /** * 通过实体作为筛选条件查询 * @param item 实例对象 * @return 对象列表 */ List<Item> selectList(Item item); /** * 新增数据 * @param item 实例对象 * @return 影响行数 */ int insert(Item item); /** * 修改数据 * @param item 实例对象 * @return 修改 */ Item update(Item item); /** * 通过主键删除数据 * @param itemId 主键 * @return 影响行数 */ int deleteById(String itemId); }复制代码
ItemServicImpl实现类内容:
package com.qidian.demo.service.impl; import com.qidian.demo.pojo.Item; import com.qidian.demo.mapper.ItemMapper; import com.qidian.demo.service.ItemService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** * @author 戴着假发的程序员 */ @Service("itemService") public class ItemServiceImpl implements ItemService { @Resource private ItemMapper itemMapper; /** * 通过ID查询单条数据 * @param itemId 主键 * @return 实例对象 */ @Override public Item selectById(String itemId) { return this.itemMapper.selectById(itemId); } /** * 查询所有 * @return 实例对象的集合 */ @Override public List<Item> selectAll() { return this.itemMapper.selectAll(); } /** * 根据条件查询 * @return 实例对象的集合 */ @Override public List<Item> selectList(Item item) { return this.itemMapper.selectList(item); } /** * 新增数据 * @param item 实例对象 * @return 实例对象 */ @Override public int insert(Item item) { return this.itemMapper.insert(item); } /** * 修改数据 * @param item 实例对象 * @return 实例对象 */ @Override public Item update(Item item) { this.itemMapper.update(item); return this.selectById(item.getItemId()); } /** * 通过主键删除数据 * @param itemId 主键 * @return 是否成功 */ @Override public int deleteById(String itemId) { return this.itemMapper.deleteById(itemId); } }复制代码
[4]controller开发
在你的controller包中添加ItemController
ItemController内容如下:
package com.qidian.demo.controller; import com.qidian.demo.pojo.Item; import com.qidian.demo.service.ItemService; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; import java.util.HashMap; import javax.annotation.Resource; /** * @author 戴着假发的程序员 */ @RestController @RequestMapping("/item") public class ItemController { @Resource private ItemService itemService; /** * @param item 参数对象 * @return 单条数据 */ @RequestMapping(value = "get", method = RequestMethod.GET) public Item selectOne(Item item) { Item result = itemService.selectById(item.getItemId()); if(result != null){ return result; } return null; } /** * 新增一条数据 * @param item 实体类 * @return Map */ @RequestMapping(value = "insert", method = RequestMethod.POST) public Map insert(Item item) { Map map = new HashMap(); map.put("code",200); int result = itemService.insert(item); if (result <= 0) { map.put("code",500); } return map; } /** * 修改一条数据 * @param item 实体类 * @return Map */ @RequestMapping(value = "update") public Map update(Item item) { Map map = new HashMap(); map.put("code",200); Item result = itemService.update(item); if (result != null) { map.put("data",result); }else{ map.put("code",500); } return map; } /** * 删除一条数据 * @param item 参数对象 * @return Map */ @RequestMapping(value = "delete") public Map delete(Item item) { Map map = new HashMap(); map.put("code",200); int result = itemService.deleteById(item.getItemId()); if (result <= 0) { map.put("code",500); } return map; } /** * 查询全部 * @return Response对象 */ @RequestMapping(value = "selectAll") public List<Item> selectAll() { return itemService.selectAll(); } }复制代码
OK可以测试接口了:
接口 | 参数 | 返回值 | 说明 |
---|---|---|---|
/item/selectAll | 无 | item列表 | 返回所有item列表 |
/item/insert | item的所有列 | {code:xx,msg:xx} | 添加item |
/item/delete | item_id | {code:xx,msg:xx} | 根据id删除item |
/item/update | item所有列 | {code:xx,msg:xx} | 编辑item信息 |
/item/get | item_id | 一个item对象 | 根据id查询item信息 |
当然上面的案例只是一个简单的单表的CRUD,还有太多的细节没有处理,所以这个DEMO就是为了熟练SSM框架整合的基本操作。
后面我会更新完整的项目开发教程。多谢关注。
作者:戴着假发的程序员
链接:https://juejin.cn/post/7068938617518817287