Springboot整合通用mapper进阶1

news/2025/2/12 8:49:12/

1.自定义sql方法的使用,mapper的依赖配置文件就不一一赘述了,详情: https://blog.csdn.net/brantykl/article/details/129360320?spm=1001.2014.3001.5502

2.实体类映射

@Repository
@Data
@Table(name = "t_company")
public class Company implements Serializable {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "id")private Integer id;@Column(name = "shortName")private String shortName;@Column(name = "fullName")private String fullName;@Column(name = "isFamous")private Integer isFamous;@Column(name = "state")private Integer state;@Column(name = "remark")private String remark;@Column(name = "createDate")private Date createDate;@Column(name = "cityId")private Integer cityId;@Column(name = "userId")private Integer userId;@Column(name = "orderNo")private Integer orderNo;
}

3.生成表和数据

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for t_company
-- ----------------------------
DROP TABLE IF EXISTS `t_company`;
CREATE TABLE `t_company`  (`id` int(11) NOT NULL AUTO_INCREMENT,`shortName` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '公司名称',`fullName` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '公司全称',`isFamous` int(11) NULL DEFAULT NULL COMMENT '是否名企:\r\n            0.不是  \r\n            1.是',`state` int(11) NULL DEFAULT NULL COMMENT '状态:\r\n            0.启用\r\n            1.禁用',`remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`createDate` datetime NULL DEFAULT NULL,`cityId` int(11) NULL DEFAULT NULL,`userId` int(11) NULL DEFAULT NULL,`orderNo` int(11) NULL DEFAULT NULL COMMENT '排序编号',PRIMARY KEY (`id`) USING BTREE,INDEX `fk_compone_user`(`userId`) USING BTREE,INDEX `FK_fk_dict_company`(`cityId`) USING BTREE,CONSTRAINT `fk_compone_user` FOREIGN KEY (`userId`) REFERENCES `t_user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,CONSTRAINT `FK_fk_dict_company` FOREIGN KEY (`cityId`) REFERENCES `t_dict` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 36 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '公司表' ROW_FORMAT = Compact;-- ----------------------------
-- Records of t_company
-- ----------------------------
INSERT INTO `t_company` VALUES (1, '北京淘宝网', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (2, '北京支付宝', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 10, 1, 1);
INSERT INTO `t_company` VALUES (3, '北京蚂蚁金服', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 10, 1, 1);
INSERT INTO `t_company` VALUES (4, '七牛云服务', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 10, 1, 1);
INSERT INTO `t_company` VALUES (5, '拼多多', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 10, 1, 1);
INSERT INTO `t_company` VALUES (6, '唯品会', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 10, 1, 1);
INSERT INTO `t_company` VALUES (7, '唯品会', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 12, 1, 1);
INSERT INTO `t_company` VALUES (8, '腾讯公司', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 13, 1, 1);
INSERT INTO `t_company` VALUES (9, '杭州淘宝网', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 13, 1, 1);
INSERT INTO `t_company` VALUES (10, '浪潮软件', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 14, 1, 1);
INSERT INTO `t_company` VALUES (12, '简途旅行', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 15, 1, 1);
INSERT INTO `t_company` VALUES (13, '绿盟科技', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 16, 1, 1);
INSERT INTO `t_company` VALUES (14, '金信石', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (15, '贵鑫堂', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 3, 1, 1);
INSERT INTO `t_company` VALUES (16, '掌众金服', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (17, '晨创科技', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (18, '中软国际', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (19, '全景网', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (20, '翼龙贷', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (21, '中烟新商盟', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (22, '西安泰晟', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (23, '联创佳讯', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (24, '神航星云', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (25, '软通动力', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (26, '网众传媒', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (27, '软通动力', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (28, '文思海辉', NULL, 1, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (29, '赞同科技', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (30, '北正云鼎', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (31, '信雅达', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (32, '东方微银', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (33, '易宝软件', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (34, '智乾区块链', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);
INSERT INTO `t_company` VALUES (35, '中科金财', NULL, 0, 0, NULL, '2019-08-08 00:00:00', 9, 1, 1);SET FOREIGN_KEY_CHECKS = 1;

4.编写xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.brant.dao.ICompanyDao"><!-- 查询公司信息列表 --><select id="findAll" resultType="com.brant.entity.Company">SELECT * FROM t_company</select><!-- 根据 ID 查询公司信息 --><select id="findById" parameterType="int" resultType="com.brant.entity.Company">SELECT * FROM t_company WHERE id=#{id}</select><!-- 更新公司信息 --><update id="update" parameterType="com.brant.entity.Company">UPDATE t_company SET shortName=#{shortName},fullName=#{fullName},isFamous=#{isFamous},state=#{state},remark=#{remark},createDate=#{createDate},cityId=#{cityId},userId=#{userId},orderNo=#{orderNo}WHERE id=#{id}</update><!-- 删除公司信息 --><delete id="deleteById" parameterType="int">DELETE FROM t_company WHERE id=#{id}</delete></mapper>

5.目录结构,这里需要注意xml文件名称需要与ICompanyDao一致.在配置文件配置也要是这样mapper-locations: classpath:com.brant.dao/*Mapper.xml,否则就不可以找到xml文件(这里的*是任意)
在这里插入图片描述

6.编写一个简单demo,依次在controller,service,dao编写deleteById

@RequestMapping("/company")
@Controller
public class CompanyController {@Autowiredprivate ICompanyService companyService;@RequestMapping(method = RequestMethod.GET,path = "/deleteCompanyById/{id}")@ResponseBodypublic String deleteCompanyById( @PathVariable Integer id){if(StringUtils.isEmpty(companyService.findCompanyById(id))){return "公司不存在";}else {companyService.deleteById(id);return "删除成功";}}}
public interface ICompanyService {void deleteById(Integer id);
}
@Service
public class CompanyServiceImpl implements ICompanyService {@Autowiredprivate ICompanyDao companyDao;@Overridepublic void deleteById(Integer id) {companyDao.deleteById(id);}}
@Component
public interface ICompanyDao extends IBaseDao<Company>{/*** description: 根据id删除公司** @params No such property: code for class: Script1* @return*/Boolean delete(Integer id);
}

6.总结
.1)在使用自定义的数据操作时,要注意方法不要与mapper里封装好的方法重复,否则编译会报错
 2)在写xml文件时,一定要注意文件名和命名空间(namespace)不要写错了,后面spring找不到
 3)在resources建立目录需要使用com/brant/dao的形式,当然也可以直接和dao.下的xxx.java文件写在一起,只要定义好mapper-locations就可以了
 4)除了使用xml也可以使用注解@Delete来实现数据操作

/*** description: 根据id删除公司** @params No such property: code for class: Script1* @return*/@Delete("DELETE FROM t_company WHERE id=#{id}")void deleteById(int id);

7.之前有拿到一个ChatGPT的账号,于是就是用了.发现ChatGPT体验非常好,之前碰到的好多问题,都需要我们去百度搜索.可是,百度出来的垃圾数据有许多,而且还有一些不成功的案例.有一些常识性的东西忘记了,百度却要花费十几分钟的时间.因此ChatGPT确实可以提高解决问题的速度.下面贴一些使用ChatGPT的一些问答,当然,对于我来说,ChatGPT下一位老师,简称(柴师傅),后面会借助它在java以及一些其它领域升级打怪.目前在工作没有用到,不过学习上确实受益匪浅,码代码的速度也快多了.后面会更注重一些设计模式底层的东西了.

.a)问题1:
在这里插入图片描述
.b)问题2:在这里插入图片描述


http://www.ppmy.cn/news/348986.html

相关文章

春风得意马蹄疾,金仓佳讯频频传——任永杰博士获“海淀区有突出贡献专家”荣誉称号...

2007年4月20日&#xff0c;“海淀区有突出贡献专家和优秀青年人才表彰会”在海淀区委区政府报告厅隆重召开。北京人大金仓信息技术有限公司总经理任永杰博士因其在国产数据库领域的优异贡献&#xff0c;经过专家评审委员会的严格评审和海淀区人才工作领导小组的审定&#xff0c…

调度指挥系统解决方案

调度指挥系统解决方案 通信数字化、信息化是当今社会发展的大趋势&#xff0c;在这种趋势下&#xff0c;用信息技术武装我国工业、国防和国民经济的发展&#xff0c;以通信数字化、信息化带动工业现代化&#xff0c;不断提高企业的国际竞争力&#xff0c;实现行业跨越式发展&am…

13/18V系列中频切换开关原理及应用方式

轉載自http://dishhd.net/dish-hd8/59.html 13/18V系列中频切换开关原理及应用方式 2014年8月20日 by dishadmin 对于大家耳熟能详的0/22kHz、DiSEqC四切一等切换方式都非常的了解&#xff0c;但是对单组合或者多组合方式所衍生出来的多种型号、系列的组合开关&#xff0c;或者…

“小程序+直播”怎样搅动音视频技术生态?

责编 / 王宇豪 策划 / LiveVideoStack 12月26日晚间&#xff0c;微信小程序开放了直播能力&#xff0c;并首先向社交、教育、医疗、政务民生、金融等五大应用场景开放。与原生App应用和基于浏览器的H5应用相比&#xff0c;小程序直播会对音视频技术生态带来哪些影响&#xff1f…

周思进:产品和服务在“骂”与“被骂”中不断打磨

在多媒体开发技术圈&#xff0c;像周思进这样的老兵不在少数&#xff0c;他们在各大公司中扮演音视频技术leader的角色&#xff0c;走上管理岗位&#xff0c;或者选择了创业之路。和所有的技术创业者一样&#xff0c;周思进面临的最大挑战是从技术leader到CEO的角色转换。LiveV…

《网管员必读》系列丛书佳讯不断,05年度各路评选全面上榜

我是本书作者&#xff0c;在此与大家分享一下《网管员必读》系列一年多以来所取得一些成绩。 《网管员必读》系列自2004年9月份上市场预测以来就奇迹不断&#xff0c;先是在《中华读书报》的月度市场调查中脱颖而出&#xff0c;几乎每出一本都成为了当时IT图书市场上关注的焦点…

阿里通是香港电讯运营商佳讯国际有限公司

阿里通是香港电讯运营商佳讯国际有限公司&#xff08;PNETSNo1368&#xff09;面向全球推出的一款网络电话产品&#xff0c;实现了全球范围内的300多个国家与地区间超低资费&#xff0c;拨打固定与移动电话。 阿里通拥有行业顶尖的技术研发团队&#xff0c;始终专注于最先进的V…

华亭一中2021年高考成绩查询,华亭一中2019高考又传佳讯!

原标题&#xff1a;华亭一中2019高考又传佳讯&#xff01; 热烈祝贺华亭一中2019年高考再创辉煌&#xff01;一本上线478人&#xff0c;比去年净增127人&#xff0c;二本上线997人&#xff0c;比去年净增66人&#xff01;热烈祝贺王言同学高考638分居全省文科36名&#xff0c;李…