SpringBoot


SpringBoot实战之数据库相关操作

提示:这里可以添加本文要记录的大概内容:
通过springboot访问数据库的方式有三种,第一种:JdbcTemplate,第二种JPA,第三种Mybatis,本文以movietop50 为讲解案例。
案例地址: https://github.com/CHonghaohao/movieTop50


提示:以下是本篇文章正文内容,感谢各位批评指正!

一、准备工作:

1、演示之前,需要准备好相关的工具,例如数据库,本文中的案例使用的是MySQL,在正式开始项目之前,创建表格,命名为:movietop50,具体内容如下:

/*Navicat Premium Data TransferSource Server         : 本地Source Server Type    : MySQLSource Server Version : 50645Source Host           : localhost:3306Source Schema         : movietop50Target Server Type    : MySQLTarget Server Version : 50645File Encoding         : 65001Date: 26/01/2021 10:24:45
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for top
-- ----------------------------
DROP TABLE IF EXISTS `top`;
CREATE TABLE `top`  (`id` int(10) NOT NULL AUTO_INCREMENT,`movie_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`movie_director` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`movie_actor` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`movie_year` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`movie_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`movie_grade` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`movie_gradenum` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`movie_evaluate` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`movie_img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 62 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;-- ----------------------------
-- Records of top
-- ----------------------------
INSERT INTO `top` VALUES (1, '肖申克的救赎', ' 弗兰克·德拉邦特 ', '   蒂姆·罗宾斯 Tim  ', '1994', '美国/犯罪/剧情', '9.7', '2180339', '希望让人自由', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg');
INSERT INTO `top` VALUES (2, '霸王别姬', ' 陈凯歌 Kaige Chen  ', '  张国荣 Leslie Cheung/张丰毅  ', '1993', '中国大陆/中国香港/剧情/爱情/同性', '9.6', '1617258', '风华绝代', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2561716440.jpg');
INSERT INTO `top` VALUES (3, '这个杀手不太冷', ' 吕克·贝松 Luc Besson  ', '  让·雷诺 Jean Reno/娜塔莉·波特曼 ', '1994', '法国/美国/剧情/动作/犯罪', '9.4', '1830376', '怪蜀黍和小萝莉不得不说的故事', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p511118051.jpg');
INSERT INTO `top` VALUES (4, '泰坦尼克号', ' 詹姆斯·卡梅隆 James Cameron ', '   莱昂纳多·迪卡普里奥 ', '1997', '美国/剧情/爱情/灾难', '9.4', '1599954', '失去的才是永恒的。 ', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p457760035.jpg');
INSERT INTO `top` VALUES (5, '美丽人生', ' 罗伯托·贝尼尼 Roberto Benigni  ', '罗伯托·贝尼尼 ', '1997', '意大利/剧情/喜剧/爱情/战争', '9.5', '1021593', '最美的谎言', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2578474613.jpg');
INSERT INTO `top` VALUES (6, '千与千寻', ' 宫崎骏 Hayao Miyazaki  ', '  柊瑠美 Rumi Hîragi ', '2001', '日本/剧情/动画/奇幻', '9.4', '1714006', '最好的宫崎骏,最好的久石让。 ', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2557573348.jpg');
INSERT INTO `top` VALUES (7, '辛德勒的名单', ' 史蒂文·斯皮尔伯格 Steven Spielberg ', '   连姆·尼森 ', '1993', '美国/剧情/历史/战争', '9.5', '839463', '拯救一个人,就是拯救整个世界', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p492406163.jpg');
INSERT INTO `top` VALUES (8, '盗梦空间', ' 克里斯托弗·诺兰 Christopher Nolan  ', '  莱昂纳多·迪卡普里奥 ', '2010', '美国/英国/剧情/科幻/悬疑/冒险', '9.3', '1600397', '诺兰给了我们一场无法盗取的梦', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2616355133.jpg');
INSERT INTO `top` VALUES (9, '忠犬八公的故事', ' 莱塞·霍尔斯道姆 Lasse Hallström ', '   理查·基尔 ', '2009', '美国/英国/剧情', '9.4', '1092067', '永远都不能忘记你所爱的人', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p524964039.jpg');
INSERT INTO `top` VALUES (10, '海上钢琴师', ' 朱塞佩·托纳多雷 Giuseppe Tornatore  ', '  蒂姆·罗斯 Tim Roth ', '1998', '意大利/剧情/音乐', '9.3', '1303992', '每个人都要走一条自己坚定了的路,就算是粉身碎骨。 ', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2574551676.jpg');
INSERT INTO `top` VALUES (11, '星际穿越', ' 克里斯托弗·诺兰 Christopher Nolan  ', '  马修·麦康纳 ', '2014', '美国/英国/加拿大/冰岛/剧情/科幻/冒险', '9.3', '1272767', '爱是一种力量,让我们超越时空感知它的存在', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2614988097.jpg');
INSERT INTO `top` VALUES (12, '楚门的世界', ' 彼得·威尔 Peter Weir  ', '  金·凯瑞 Jim Carrey ', '1998', '美国/剧情/科幻', '9.3', '1186190', '如果再也不能见到你,祝你早安,午安,晚安', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p479682972.jpg');
INSERT INTO `top` VALUES (13, '三傻大闹宝莱坞', ' 拉库马·希拉尼 Rajkumar Hirani ', '   阿米尔·汗 ', '2009', '印度/剧情/喜剧/爱情/歌舞', '9.2', '1456368', '英俊版憨豆,高情商版谢耳朵', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p579729551.jpg');
INSERT INTO `top` VALUES (14, '机器人总动员', ' 安德鲁·斯坦顿 Andrew Stanton  ', '  本·贝尔特 Ben Burtt ', '2008', '美国/科幻/动画/冒险', '9.3', '1028037', '小瓦力,大人生', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1461851991.jpg');
INSERT INTO `top` VALUES (15, '放牛班的春天', ' 克里斯托夫·巴拉蒂 Christophe Barratier ', '   热拉尔·朱尼奥 ', '2004', '法国/瑞士/德国/剧情/音乐', '9.3', '1011658', '天籁一般的童声,是最接近上帝的存在。 ', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910824951.jpg');
INSERT INTO `top` VALUES (16, '大话西游之大圣娶亲', ' 刘镇伟 Jeffrey Lau  ', '  周星驰 Stephen Chow/吴孟达 ', '1995', '中国香港/中国大陆/喜剧/爱情/奇幻/古装', '9.2', '1163415', '一生所爱', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2455050536.jpg');
INSERT INTO `top` VALUES (17, '熔炉', ' 黄东赫 Dong hyuk', '孔侑/Yoo/Gong/郑有美/Yu', '2011', '韩国/剧情', '9.3', '713037', '我们一路奋战不是为了改变世界,而是为了不让世界改变我们', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p1363250216.jpg');
INSERT INTO `top` VALUES (18, '疯狂动物城', ' 拜伦·霍华德 Byron Howard  ', ' 瑞奇·摩尔 Rich Moore/金妮弗 ', '2016', '美国/喜剧/动画/冒险', '9.2', '1401179', '迪士尼给我们营造的乌托邦就是这样,永远善良勇敢,永远出乎意料', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2614500649.jpg');
INSERT INTO `top` VALUES (19, '无间道', ' 刘伟强 ', '  刘德华/梁朝伟/黄秋生 ', '2002', '中国香港/剧情/犯罪/悬疑', '9.2', '952317', '香港电影史上永不过时的杰作', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2564556863.jpg');
INSERT INTO `top` VALUES (20, '教父', ' 弗朗西斯·福特·科波拉 Francis Ford Coppola ', '   马龙·白兰度 ', '1972', '美国/剧情/犯罪', '9.3', '713094', '千万不要记恨你的对手,这样会让你失去理智', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p616779645.jpg');
INSERT INTO `top` VALUES (21, '龙猫', ' 宫崎骏 Hayao Miyazaki  ', '  日高法子 Noriko Hidaka/坂本千夏 ', '1988', '日本/动画/奇幻/冒险', '9.2', '973888', '人人心中都有个龙猫,童年就永远不会消失', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2540924496.jpg');
INSERT INTO `top` VALUES (22, '当幸福来敲门', ' 加布里尔·穆奇诺 Gabriele Muccino  ', '  威尔·史密斯 ', '2006', '美国/剧情/传记/家庭', '9.1', '1173133', '平民励志片。 ', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2614359276.jpg');
INSERT INTO `top` VALUES (23, '怦然心动', ' 罗伯·莱纳 Rob Reiner ', '   玛德琳·卡罗尔 Madeline Carroll ', '2010', '美国/剧情/喜剧/爱情', '9.1', '1366297', '真正的幸福是来自内心深处', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p501177648.jpg');
INSERT INTO `top` VALUES (24, '触不可及', ' 奥利维·那卡什 Olivier Nakache  ', ' 艾力克·托兰达 Eric Toledano   ', '2011', '法国/剧情/喜剧', '9.2', '759487', '满满温情的高雅喜剧', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p1454261925.jpg');
INSERT INTO `top` VALUES (25, '控方证人', ' 比利·怀尔德 Billy Wilder ', '   泰隆·鲍华 Tyrone Power ', '1957', '美国/剧情/犯罪/悬疑', '9.6', '321380', '比利·怀德满分作品', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p1505392928.jpg');
INSERT INTO `top` VALUES (26, '蝙蝠侠黑暗骑士', ' 克里斯托弗·诺兰 Christopher Nolan   ', ' 克里斯蒂安·贝尔 ', '2008', '美国/英国/剧情/动作/科幻/犯罪/惊悚', '9.2', '793967', '无尽的黑暗', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p462657443.jpg');
INSERT INTO `top` VALUES (27, '活着', ' 张艺谋 Yimou Zhang  ', '  葛优 You Ge/巩俐 Li Gong ', '1994', '中国大陆/中国香港/剧情/历史/家庭', '9.3', '615725', '张艺谋最好的电影', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2513253791.jpg');
INSERT INTO `top` VALUES (28, '末代皇帝', ' 贝纳尔多·贝托鲁奇 Bernardo Bertolucci  ', '  尊龙 John Lone ', '1987', '英国/意大利/中国大陆/法国/剧情/传记/历史', '9.3', '582790', '“不要跟我比惨,我比你更惨”再适合这部电影不过了', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p452089833.jpg');
INSERT INTO `top` VALUES (29, '何以为家', ' 娜丁·拉巴基 Nadine Labaki  ', '  扎因·拉费阿 Zain al', '2018', '黎巴嫩/法国/美国/剧情', '9.1', '742609', '凝视卑弱生命,用电影改变命运', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2555295759.jpg');
INSERT INTO `top` VALUES (30, '指环王3王者无敌', ' 彼得·杰克逊 Peter Jackson ', '   伊利亚·伍德 Elijah Wood ', '2003', '美国/新西兰/剧情/动作/奇幻/冒险', '9.2', '578331', '史诗的终章', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p1910825503.jpg');
INSERT INTO `top` VALUES (31, '摔跤吧!爸爸', ' 涅提·蒂瓦里 Nitesh Tiwari ', '   阿米尔·汗 Aamir Khan ', '2016', '印度/剧情/传记/运动/家庭', '9.0', '1200205', '你不是在为你一个人战斗,你要让千千万万的女性看到女生并不是只能相夫教子', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2457983084.jpg');
INSERT INTO `top` VALUES (32, '飞屋环游记', ' 彼特·道格特 Pete Docter  ', ' 鲍勃·彼德森 Bob Peterson   ', '2009', '美国/剧情/喜剧/动画/冒险', '9.0', '1019292', '最后那些最无聊的事情,才是最值得怀念的。 ', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p485887754.jpg');
INSERT INTO `top` VALUES (33, '少年派的奇幻漂流', ' 李安 Ang Lee  ', '  苏拉·沙玛 Suraj Sharma ', '2012', '美国/中国台湾/英国/加拿大/剧情/奇幻/冒险', '9.1', '1082008', '瑰丽壮观、无人能及的冒险之旅', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1784592701.jpg');
INSERT INTO `top` VALUES (34, '十二怒汉', ' Sidney Lumet  ', '  亨利·方达 Henry Fonda ', '1957', '美国/剧情', '9.4', '350234', '1957年的理想主义。 ', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2173577632.jpg');
INSERT INTO `top` VALUES (35, '哈利·波特与魔法石', ' Chris Columbus ', '   Daniel Radcliffe ', '2001', '美国/英国/奇幻/冒险', '9.1', '781788', '童话世界的开端', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2614949805.jpg');
INSERT INTO `top` VALUES (36, '素媛', ' 李濬益 Jun ', '薛景求 Kyung', '2013', '/韩国/剧情', '9.3', '485364', '受过伤害的人总是笑得最开心,因为他们不愿意让身边的人承受一样的痛苦', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2118532944.jpg');
INSERT INTO `top` VALUES (37, '鬼子来了', ' 姜文 Wen Jiang  ', '  姜文 Wen Jiang ', '2000', '中国大陆/剧情/喜剧', '9.3', '470883', '对敌人的仁慈,就是对自己残忍', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2553104888.jpg');
INSERT INTO `top` VALUES (38, '哈尔的移动城堡', ' 宫崎骏 Hayao Miyazaki  ', '  倍赏千惠子 Chieko Baishô ', '2004', '日本/动画/奇幻/冒险', '9.1', '750244', '带着心爱的人在天空飞翔', 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2174346180.jpg');
INSERT INTO `top` VALUES (39, '天空之城', ' 宫崎骏 Hayao Miyazaki  ', '  田中真弓 Mayumi Tanaka ', '1986', '日本/动画/奇幻/冒险', '9.1', '643733', '对天空的追逐,永不停止。 ', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p1446261379.jpg');
INSERT INTO `top` VALUES (40, '大话西游之月光宝盒', ' 刘镇伟 Jeffrey Lau  ', '  周星驰 Stephen Chow ', '1995', '中国香港/中国大陆/喜剧/爱情/奇幻/古装', '9.0', '928050', '旷古烁今', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2561721372.jpg');
INSERT INTO `top` VALUES (41, '我不是药神', ' 文牧野 Muye Wen  ', '  徐峥 Zheng Xu ', '2018', '中国大陆/剧情/喜剧', '9.0', '1597217', '对我们国家而言,这样的电影多一部是一部', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2561305376.jpg');
INSERT INTO `top` VALUES (42, '罗马假日', ' 威廉·惠勒 William Wyler  ', '  奥黛丽·赫本 Audrey Hepburn ', '1953', '美国/喜剧/剧情/爱情', '9.0', '743808', '爱情哪怕只有一天', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2189265085.jpg');
INSERT INTO `top` VALUES (43, '闻香识女人', ' 马丁·布莱斯 Martin Brest  ', '  阿尔·帕西诺 Al Pacino  ', '1992', '美国/剧情', '9.1', '650636', '史上最美的探戈', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2550757929.jpg');
INSERT INTO `top` VALUES (44, '天堂电影院', ' 朱塞佩·托纳多雷 Giuseppe Tornatore   ', ' 菲利普·努瓦雷 ', '1988', '意大利/法国/剧情/爱情', '9.2', '496938', '那些吻戏,那些青春,都在影院的黑暗里被泪水冲刷得无比清晰', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2559577569.jpg');
INSERT INTO `top` VALUES (45, '辩护人', ' 杨宇硕 Woo seok', '宋康昊/Kang', '2013', '韩国/剧情', '9.2', '466423', '电影的现实意义大过电影本身', 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2158166535.jpg');
INSERT INTO `top` VALUES (46, '搏击俱乐部', ' 大卫·芬奇 David Fincher   ', ' 爱德华·诺顿 Edward Norton ', '1999', '美国/德国/剧情/动作/悬疑/惊悚', '9.0', '663050', '邪恶与平庸蛰伏于同一个母体,在特定的时间互相对峙', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p1910926158.jpg');
INSERT INTO `top` VALUES (47, '大闹天宫', ' 万籁鸣 Laiming Wan ', '  邱岳峰 Yuefeng Qiu ', '1961', '中国大陆/动画/奇幻', '9.3', '304648', '经典之作,历久弥新', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2184505167.jpg');
INSERT INTO `top` VALUES (48, '李成基', NULL, NULL, NULL, '1994   美国   犯罪 剧情', '9.7', '2180339', '希望让人自由', NULL);
INSERT INTO `top` VALUES (49, '李成基', NULL, NULL, NULL, '1994   美国   犯罪 剧情', '9.7', '2180339', '希望让人自由', NULL);
INSERT INTO `top` VALUES (57, '秦正君', NULL, NULL, NULL, '1994   美国   犯罪 剧情', '9.7', '2180339', '希望让人自由', NULL);
INSERT INTO `top` VALUES (58, '秦正君', NULL, NULL, NULL, '1994   美国   犯罪 剧情', '9.7', '2180339', '希望让人自由', NULL);
INSERT INTO `top` VALUES (59, '秦正君', NULL, NULL, NULL, '1994   美国   犯罪 剧情', '9.7', '2180339', '希望让人自由', NULL);
INSERT INTO `top` VALUES (60, '秦正君', NULL, NULL, NULL, '1994   美国   犯罪 剧情', '9.7', '2180339', '希望让人自由', NULL);
INSERT INTO `top` VALUES (61, '秦正君', NULL, NULL, NULL, '1994   美国   犯罪 剧情', '9.7', '2180339', '希望让人自由', NULL);-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户登录账号',`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '用户登录密码',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'admin', '123456');
INSERT INTO `user` VALUES (2, 'chh', '123456');

2、配置数据库连接池:
1.使用application.properties配置文件,也可以使用druid连接池,另外配置文件使用yaml配置,即application.yml;这里我们配置application.properties。连接池的配置如下:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/movietop50?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

3、建立与数据库对应的POJO类:
(POJO:plain old java objects : 简单的java对象,实际上就是普通javaBeans)代码如下所示:

public class Top implements Serializable {@Idprivate Integer id;private String movieName;private String movieDirector;private String movieActor;private String movieYear;private String movieType;private String movieGrade;private String movieGradenum;private String movieEvaluate;private String movieImg;private static final long serialVersionUID = 1L;
}

二、实际操作:

1、通过MyBatis来实现数据库的访问。首先我们需要引入 starter:

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version>
</dependency>

(此处的starter非官方提供,所以版本号与springboot不一致,这就需要我们手动指定版本)

2、MyBatis支持通过XML或者注解的方式来指定操作数据库的SQL。
首先我们需要配置mapper的目录。我们在application.properties中进行配置:

mybatis.type-Aliases-Package=com.example.demo.Entity
mybatis.mapper-Locations=classpath:mapper/*.xml
logging.level.com.example.demo2:DEBUG
server.port=9999
######################################
###devtools 选择性配置文件 默认为true
######################################
spring.devtools.restart.enabled=true

这里配置主要包括三个部分,一个是mybatis自身的一些配置,例如基本类型的别名。第二个是指定mapper文件的位置,第三个POJO类的别名。这个配置也可以通过 Java configuration来实现,由于篇幅的问题,我这里就不详述了,有兴趣的朋友可以自己实现一下。

3、配置完后,我们先编写mapper对应的接口:

public interface TopDao {int deleteByPrimaryKey(Integer id);int insert(Top record);int insertSelective(Top record);Top selectByPrimaryKey(Integer id);int updateByPrimaryKeySelective(Top record);int updateByPrimaryKey(Top record);List<Top> selectAll();void idTofront(Integer id);int insertmovie(Top top);
}

该接口暂时只定义了四个方法,即添加、更新,以及根据ID查询和分页查询。这是一个接口,并且和JPA类似,可以不用实现类。
4、接下来我们编写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.example.demo.Dao.TopDao"><resultMap id="BaseResultMap" type="com.example.demo.Entity.Top"><id column="id" jdbcType="INTEGER" property="id" /><result column="movie_name" jdbcType="VARCHAR" property="movieName" /><result column="movie_director" jdbcType="VARCHAR" property="movieDirector" /><result column="movie_actor" jdbcType="VARCHAR" property="movieActor" /><result column="movie_year" jdbcType="VARCHAR" property="movieYear" /><result column="movie_type" jdbcType="VARCHAR" property="movieType" /><result column="movie_grade" jdbcType="VARCHAR" property="movieGrade" /><result column="movie_gradenum" jdbcType="VARCHAR" property="movieGradenum" /><result column="movie_evaluate" jdbcType="VARCHAR" property="movieEvaluate" /><result column="movie_img" jdbcType="VARCHAR" property="movieImg" /></resultMap><sql id="Base_Column_List">id, movie_name, movie_director, movie_actor, movie_year, movie_type, movie_grade,movie_gradenum, movie_evaluate, movie_img</sql><select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">select<include refid="Base_Column_List" />from topwhere id = #{id,jdbcType=INTEGER}</select><select id="selectAll" resultMap="BaseResultMap">select * from top</select><delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">delete from topwhere id = #{id,jdbcType=INTEGER}</delete><insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.example.demo.Entity.Top" useGeneratedKeys="true">insert into top (movie_name, movie_director, movie_actor,movie_year, movie_type, movie_grade,movie_gradenum, movie_evaluate, movie_img)values (#{movieName,jdbcType=VARCHAR}, #{movieDirector,jdbcType=VARCHAR}, #{movieActor,jdbcType=VARCHAR},#{movieYear,jdbcType=VARCHAR}, #{movieType,jdbcType=VARCHAR}, #{movieGrade,jdbcType=VARCHAR},#{movieGradenum,jdbcType=VARCHAR}, #{movieEvaluate,jdbcType=VARCHAR}, #{movieImg,jdbcType=VARCHAR})</insert><insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.example.demo.Entity.Top" useGeneratedKeys="true">insert into top<trim prefix="(" suffix=")" suffixOverrides=","><if test="movieName != null">movie_name,</if><if test="movieDirector != null">movie_director,</if><if test="movieActor != null">movie_actor,</if><if test="movieYear != null">movie_year,</if><if test="movieType != null">movie_type,</if><if test="movieGrade != null">movie_grade,</if><if test="movieGradenum != null">movie_gradenum,</if><if test="movieEvaluate != null">movie_evaluate,</if><if test="movieImg != null">movie_img,</if></trim><trim prefix="values (" suffix=")" suffixOverrides=","><if test="movieName != null">#{movieName,jdbcType=VARCHAR},</if><if test="movieDirector != null">#{movieDirector,jdbcType=VARCHAR},</if><if test="movieActor != null">#{movieActor,jdbcType=VARCHAR},</if><if test="movieYear != null">#{movieYear,jdbcType=VARCHAR},</if><if test="movieType != null">#{movieType,jdbcType=VARCHAR},</if><if test="movieGrade != null">#{movieGrade,jdbcType=VARCHAR},</if><if test="movieGradenum != null">#{movieGradenum,jdbcType=VARCHAR},</if><if test="movieEvaluate != null">#{movieEvaluate,jdbcType=VARCHAR},</if><if test="movieImg != null">#{movieImg,jdbcType=VARCHAR},</if></trim></insert><insert id="insertmovie" parameterType="com.example.demo.Entity.Top">insert into top (id, movie_name, movie_director, movie_actor,movie_year, movie_type, movie_grade,movie_gradenum, movie_evaluate, movie_img)values (#{id,jdbcType=INTEGER},#{movieName,jdbcType=VARCHAR}, #{movieDirector,jdbcType=VARCHAR}, #{movieActor,jdbcType=VARCHAR},#{movieYear,jdbcType=VARCHAR}, #{movieType,jdbcType=VARCHAR}, #{movieGrade,jdbcType=VARCHAR},#{movieGradenum,jdbcType=VARCHAR}, #{movieEvaluate,jdbcType=VARCHAR}, #{movieImg,jdbcType=VARCHAR})</insert><update id="updateByPrimaryKeySelective" parameterType="com.example.demo.Entity.Top">update top<set><if test="movieName != null">movie_name = #{movieName,jdbcType=VARCHAR},</if><if test="movieDirector != null">movie_director = #{movieDirector,jdbcType=VARCHAR},</if><if test="movieActor != null">movie_actor = #{movieActor,jdbcType=VARCHAR},</if><if test="movieYear != null">movie_year = #{movieYear,jdbcType=VARCHAR},</if><if test="movieType != null">movie_type = #{movieType,jdbcType=VARCHAR},</if><if test="movieGrade != null">movie_grade = #{movieGrade,jdbcType=VARCHAR},</if><if test="movieGradenum != null">movie_gradenum = #{movieGradenum,jdbcType=VARCHAR},</if><if test="movieEvaluate != null">movie_evaluate = #{movieEvaluate,jdbcType=VARCHAR},</if><if test="movieImg != null">movie_img = #{movieImg,jdbcType=VARCHAR},</if></set>where id = #{id,jdbcType=INTEGER}</update><update id="updateByPrimaryKey" parameterType="com.example.demo.Entity.Top">update topset movie_name = #{movieName,jdbcType=VARCHAR},movie_director = #{movieDirector,jdbcType=VARCHAR},movie_actor = #{movieActor,jdbcType=VARCHAR},movie_year = #{movieYear,jdbcType=VARCHAR},movie_type = #{movieType,jdbcType=VARCHAR},movie_grade = #{movieGrade,jdbcType=VARCHAR},movie_gradenum = #{movieGradenum,jdbcType=VARCHAR},movie_evaluate = #{movieEvaluate,jdbcType=VARCHAR},movie_img = #{movieImg,jdbcType=VARCHAR}where id = #{id,jdbcType=INTEGER}</update><update id="idTofront" parameterType="java.lang.Integer">update top set id = id - 1 where id > #{id,jdbcType=INTEGER}</update>
</mapper>

5、最后,我们需要手动指定mapper扫描的包:

@SpringBootApplication
@MapperScan("com.example.demo.*")
public class Movietop50Application extends SpringBootServletInitializer {@CrossOrigin(origins = {"*"})public static void main(String[] args) {SpringApplication.run(Movietop50Application.class, args);}

(进行测试…)


总结

本文演示Spring boot与MyBatis的集成,整体上来说配置比较简单,以前做过相关配置的同学应该感觉比较明显,Spring boot确实在这方面给我们提供了很大的帮助。后续的文章中我们只会使用MyBatis这一种方式来进行数据库的操作,这里还有一点需要说明一下的是,MyBatis的分页查询在这里是手写的,这个分页在正式开发中可以通过插件来完成,不过这个与Spring boot没什么关系,所以本文暂时通过这种手动的方式来进行分页的处理。

SpringBoot初学笔记(SpringBoot实战之数据库相关操作)相关推荐

  1. [笔记] 阿里云服务器的相关操作

    文章目录 前言 ECS 服务器数据转移 磁盘扩容 磁盘扩容 Ubuntu 无法启动 更换系统盘 快照及镜像 卸载.挂载数据盘 标题:[笔记] 阿里云服务器的相关操作 前言 最近一直在用阿里云服务器,感 ...

  2. 导学+初识MySQL+SQL语法规范+数据库相关操作+表相关操作+MySql存储引擎介绍+MySQL表的创建+测试数据类型

    一.导学 1.什么是SQL? 结构化查询语言,数据库管理系统通过SQL语言来管理数据库中的数据: 2.SQL语言组成部分 (1)DDL--数据定义语言,主要定义数据库.表.视图.索引和触发器等 (2) ...

  3. Hive数据类型、数据库相关操作、表的相关操做、数据的导入导出

    文章目录 Hive数据类型 1.基本数据类型 2.集合数据类型 案例实操 3.类型转化 数据库的相关操作 1.创建数据库 2.查询数据库 3.修改数据库 4.删除数据库 表的相关操作 1.建表 2.管 ...

  4. Django 数据库相关操作 (六)

    前言 上篇已经介绍过模型相关操作,并创建好了数据库及相关表字段,接下来将通过以下表在Django中进行表数据的增删改查. from django.db import modelsclass Stude ...

  5. python数据库环境详解_python中MySQL数据库相关操作

    一 安装基本环境 1 简介 MySQL 基于TCP 协议之上的开发,但是网络连接后,传输的数据必须遵循MySQL的协议,封装好MySQL协议的包,就是驱动程序 MySQL 的驱动 MySQLDB 最有 ...

  6. springboot框架笔记——springboot提供的自动配置

    Springboot基本配置 spring MVC的定制配置需要我们的配置实现一个WebMvcConfigurer接口,如果实在spring环境下需要使用@EnableWebMVC注解,来开启对spr ...

  7. mysql数据库相关操作

    1.进入mysql/bin目录下输入mysqladmin processlist; 2.启动mysql,输入show processlist; 如果有 SUPER 权限,则可以看到全部的线程,否则,只 ...

  8. Mysql(4)——数据库相关操作

    (1)查看所有数据库 (2)创建数据库 create database 数据库名 charset=utf8 (3)使用数据库并且查看当前使用的是哪个数据库 (4)删除数据库

  9. laravel数据库相关操作

    SQL查询 配置好数据库连接后,可以使用 DB facade 运行查询.DB facade 为每种类型的查询提供了方法:select.update.insert.delete 和 statement. ...

  10. Linux学习笔记29——Linux的权限相关操作(user、group部分相关操作)

    一.账号管理 好啦!既然要管理帐号,当然是由新增与移除使用者开始的啰-下面我们就分别来谈一谈如何新增. 移除与更改使用者的相关信息吧- 1,新增与移除使用者: useradd, 相关配置文件, pas ...

最新文章

  1. SQL Server 2005下的分页SQL
  2. 【JQuery】jQuery(document).ready(function($) { });的几种表示方法及load和ready的区别
  3. 每日文献:2018-01-11
  4. 关于CaciiEZ端口流量阀值报警的设置
  5. php的注入点,Php注入点构造代码
  6. 在线文本按列截取工具
  7. 大白话vue——slot的作用与使用
  8. 《软件需求工程》 读书笔记之二
  9. GD32 程序烧录所遇到的问题
  10. 计算机二级vfp教程云盘,全国计算机等级考试二级VFP教程.doc
  11. 模板方法模式(模板方法设计模式)详解——小马同学@Tian
  12. 一分钟搞懂NB-IoT行业发展
  13. 答案原文翻译及解析《避凶就吉精明鬼,千变万化心不变》是指什么意思?
  14. 卡地亚搜索引擎_搜索引擎营销经典案例,分享经典网络营销5大成功案例
  15. npoi导出的excel中设置列宽
  16. 【视频】离职创业感悟
  17. python关于类和对象说法正确的是_关于类和对象的关系,下列描述正确的是()。
  18. 从IEEE购买合法MAC地址教程
  19. BZOJ 3470 Freda’s Walk (期望)
  20. 【MySQL】物化视图

热门文章

  1. 学生管理系统IPO图_南昌市2020年小升初信息管理系统学生家长操作说明及采集流程...
  2. 定制Android关机界面
  3. 【Python实战项目】做一个 刮刮乐 案例,一不小心....着实惊艳到我了。
  4. Python中in和has_key的性能比较
  5. java中exec命令,关于进程:Java exec linux命令
  6. namesilo修改域名服务器,Namesilo 域名设置 A记录
  7. elasticsearch搜索推荐系列(二)之 java实现中文转化为拼音与简称
  8. 网易互联网产品策划专员笔试题
  9. 使用mybatis拦截器实现业务层和持久化层的数据处理、加密、解密、脱敏。
  10. Kafka原理介绍+安装+基本操作