SSM框架整合开发会大幅度的提高我们的开发效率。我这里准备写一套SSM整合之后实现的单表的CRUD的案例,希望给刚刚学习SSM框架的小伙伴一些帮助。
也欢迎给位大神给出指点 _。
tips:后面有源码下载地址。
搭建一个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=
准备一个数据表:
-- 商品表 --
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我就省略了,太占空间了
}
在你的mapper包中添加ItemMapper接口和ItemMaper.xml文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xSAtD0CO-1646889283988)(assets/1645863272197.png)]
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>
在你的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);
}
}
在你的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://gitee.com/win-dk/ssm-crud
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/q2780004063/article/details/123399088
内容来源于网络,如有侵权,请联系作者删除!