当前位置: 首页 > news >正文

教你如何建设一个模板网站燕十八html教程网站建设

教你如何建设一个模板网站,燕十八html教程网站建设,seo服务指什么意思,电脑维修 做网站你能学到什么 表白墙#xff08;升级版#xff09;Mybatis的一些简单应用 正文 前⾯的案例中, 我们写了表⽩墙, 但是⼀旦服务器重启, 数据就会丢失. 要想数据不丢失, 需要把数据存储在数据库中#xff0c;接下来咱们借助MyBatis来实现数据库的操作。 数据准备 如果我们…你能学到什么 表白墙升级版Mybatis的一些简单应用 正文 前⾯的案例中, 我们写了表⽩墙, 但是⼀旦服务器重启, 数据就会丢失. 要想数据不丢失, 需要把数据存储在数据库中接下来咱们借助MyBatis来实现数据库的操作。 数据准备 如果我们想将数据存起来首先要有一个数据库吧所以首先就是要创建一个数据库 由于直接在Mysql 小黑框里写有点麻烦我们可以借助一些软件来更加简单的创建数据库我使用的是Navicat Premium17挺好用的虽然它收费但是搜搜教程免费的就来了懂我的意思吧。 最好使用Mysql 8 因为 Mysql5 好像和新的一些功能不兼容了。 这是创建一个message_info表的代码有兴趣的可以跟着敲一下就当复习了没兴趣的直接复制就行。 DROP TABLE IF EXISTS message_info; CREATE TABLE message_info ( id INT ( 11 ) NOT NULL AUTO_INCREMENT, from VARCHAR ( 127 ) NOT NULL, to VARCHAR ( 127 ) NOT NULL, message VARCHAR ( 256 ) NOT NULL, delete_flag TINYINT ( 4 ) DEFAULT 0 COMMENT 0-正常, 1-删除, create_time DATETIME DEFAULT now(), update_time DATETIME DEFAULT now() ON UPDATE now(), PRIMARY KEY ( id ) ) ENGINE INNODB DEFAULT CHARSET utf8mb4;引入依赖 引⼊MyBatis 和 MySQL驱动依赖 方法一修改pom文件然后刷新Maven就能将依赖加进来 下面是用到的依赖有需要的可以复制 dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version3.0.3/version /dependency dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId scoperuntime/scope /dependency方法二使⽤插件EditStarters来引入依赖 1先打开settings 然后在Plugins插件里面搜EditStarters,点击install就行了然后重启IDEA就能用了 2在pom文件页面右键generate然后按照以下的简图进行 方法三在创建项目的时候就将依赖加进来 以上的方法任选其一就行。 对于方法三吃一堑长一智下次我们在创建项目的时候直接添加进来就行了就不用后期再次添加了。 配置Mysql账号密码 这个操作需要在applicantion.properties文件下配置由于这里我只提供了yml格式的配置信息大家可以将这个文件重命名改成applicantion.yml照着下面的流程图改就行了。 将相应的配置信息添加进来 spring:datasource:url: jdbc:mysql://127.0.0.1:3306/blogs_text?characterEncodingutf8useSSLfalseusername: rootpassword: 456123driver-class-name: com.mysql.cj.jdbc.Driver mybatis:configuration: # 配置打印 MyBatis⽇志log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true #配置驼峰⾃动转换 编写后端代码 实体类info 我们可以看到数据库里有很多属性如果只靠我们之前定义的类中的属性肯定是不够的所以我们要重新定义一个实体类和数据库里的属性对应。 实体类代码 package com.example.leavemessage_blogs.model; import lombok.Data; import java.util.Date; Data public class Info {private Integer id;private String from;private String to;private String message;private Integer deleteFlag;private Date createTime;private Date updateTime; } 使用Mybatis 操作数据库 说到这里我们就需要想一想接口文档了我们的需求是什么要用增删改查的哪一个。我们知道表白墙的两大功能就是 1显示数据2添加信息 由此我们可以回忆一下之前我们的初级表白墙怎么做的我们是用一个list来储存数据如果要显示数据就将list返回给前端。而此刻我们不再用list储存数据了而是用数据库所以我们要提供的功能就是1查找数据select返回数据给前端页面显示2新增数据insert将用户输入的数据存到数据库中 InfoMapper接口的代码由于我们不需要方法有具体的实现所以定义成接口更合适 我们先完成一个功能添加 package com.example.leavemessage_blogs.Mapper;import com.example.leavemessage_blogs.model.Info; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List;//使用Mybatis操作数据库别忘记加Mapper注解 Mapper public interface InfoMapper {//我们采用传对象的方式由于前端只提交这几个值所以我们只需要将这几个值传入数据库就行了其他的默认值就行Insert(insert into message_info(from,to,message) values (#{from},#{to},#{message}))public boolean addInfo(Info info);} 编写并测试新增addInfo功能 上面我们已经写好了可以测试一下我们写的到底对不对 右键——》generate——》text——》勾选你要测试的方法其他不用动。 然后加上SpringBootText 测试注解编写测试代码。 因此我们将sql语句加上反引号 测试结果成功 新增的测试代码 package com.example.leavemessage_blogs.Mapper;import com.example.leavemessage_blogs.model.Info; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;SpringBootTest class InfoMapperTest {AutowiredInfoMapper infoMapper;Testvoid addInfo() {Info info new Info();info.setFrom(wulanzheng);info.setTo(chengaiying);info.setMessage(I love you);} }编写并测试查询querryAllInfo功能 查询功能的代码 package com.example.leavemessage_blogs.Mapper;import com.example.leavemessage_blogs.model.Info; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List;//别忘记加Mapper注解 Mapper public interface InfoMapper {//我们采用传对象的方式由于前端只提交这几个值所以我们只需要将这几个值传入数据库就行了其他的默认值就行 // Insert(insert into message_info(from,to,message) values (#{from},#{to},#{message})) // public boolean addInfo(Info info);Select(select * from Message_info)public ListInfo querryAllInfo();} 测试 注意如果你在右键——》generate——》text——》勾选你要测试的方法。 的过程中出现了下面的Error 不要慌直接点击ok就行了。 我们能能看到代码运行成功还打印出了结果 查询的测试代码 package com.example.leavemessage_blogs.Mapper;import com.example.leavemessage_blogs.model.Info; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;SpringBootTest class InfoMapperTest {AutowiredInfoMapper infoMapper;// Test // void addInfo() { // Info info new Info(); // info.setFrom(wulanzheng); // info.setTo(chengaiying); // info.setMessage(I love you); // infoMapper.addInfo(info); // }Test void querryAllInfo() {//将查询的数据遍历打印下来这是一种lamda表达式的写法infoMapper.querryAllInfo().forEach(System.out::println); } }这样我们的后端主要的架构就写完了但是由于应用分层的理念我们还要写service方法和controller进行交互 编写service代码应用分层交互 package com.example.leavemessage_blogs.Service;import com.example.leavemessage_blogs.Mapper.InfoMapper; import com.example.leavemessage_blogs.model.Info; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import java.util.List;Service public class InfoService {AutowiredInfoMapper infoMapper;public ListInfo getInfo(){return infoMapper.querryAllInfo();}public boolean addInfo(Info info){boolean ret infoMapper.addInfo(info);if(ret) {return true;}return false;} } 修改controller 代码 我们已经将数据库引入了自然就不需要list来存储数据了所以controller中的代码也要修改 修改后的controller代码 package com.example.leavemessage_blogs.Controller;import com.example.leavemessage_blogs.Service.InfoService; import com.example.leavemessage_blogs.model.Info; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList; import java.util.List;RequestMapping(/message) RestController public class MessageController {AutowiredInfoService infoService;RequestMapping(getList_Mysql)public ListInfo getList(){return infoService.getInfo();}RequestMapping(/addInfo)public boolean addInfo(Info info){System.out.println(info);if(StringUtils.hasLength(info.getFrom())StringUtils.hasLength(info.getTo())StringUtils.hasLength(info.getMessage())){infoService.addInfo(info);return true;}return false;} } 测试后端代码 此时我们就已经将后端代码全部修改完毕了就是测试了我们使用postman来测试。 测试新增的功能 可以看到发送成功 我们再看看数据库 没有任何问题 测试查询的功能 也是没有任何问题 小tips对于测试单一接口先将controller 类和service类Mapper类都先写了然后再经过Postman访问controller的url从而达到测试的目的这也是一种测试的方法。但是相比较于我们上面的直接generate自动生成的方法自动生成的方法更加的方便高效所以更推荐在测试一个接口的时候使用自动生成的方法。 编写前端代码 确定了后端代码全部正确以后此时我们再次点开messagewall.html文件对前端代码进行修改 看来看去好想只有load里的url需要修改一下 load();function load() {$.ajax({type: get,url: /message/getList_Mysql,//修改这里的url改成我们新的urlsuccess: function (result) {for (var message of result) {var divE div message.from 对 message.to 说: message.message /div;$(.container).append(divE);}}});} 测试前端代码 访问http://127.0.0.1:8080/messagewall.html之后会出现我们之前添加过的数据这表示查询功能正常 我们此时再添加一个数据可以看到功能正常 以上的表白墙无论你怎么重复启动程序都不会丢失数据了这就是表白墙进阶全部内容了如果有什么问题欢迎留言我们共同探讨。
文章转载自:
http://www.morning.jhgxh.cn.gov.cn.jhgxh.cn
http://www.morning.ztrht.cn.gov.cn.ztrht.cn
http://www.morning.cpljq.cn.gov.cn.cpljq.cn
http://www.morning.wblpn.cn.gov.cn.wblpn.cn
http://www.morning.kjlhb.cn.gov.cn.kjlhb.cn
http://www.morning.kmkpm.cn.gov.cn.kmkpm.cn
http://www.morning.ymsdr.cn.gov.cn.ymsdr.cn
http://www.morning.hjwxm.cn.gov.cn.hjwxm.cn
http://www.morning.ljxxl.cn.gov.cn.ljxxl.cn
http://www.morning.rcklc.cn.gov.cn.rcklc.cn
http://www.morning.dfojgo.cn.gov.cn.dfojgo.cn
http://www.morning.mtrfz.cn.gov.cn.mtrfz.cn
http://www.morning.srkzd.cn.gov.cn.srkzd.cn
http://www.morning.bpmtq.cn.gov.cn.bpmtq.cn
http://www.morning.rbzd.cn.gov.cn.rbzd.cn
http://www.morning.sjmxh.cn.gov.cn.sjmxh.cn
http://www.morning.gmdtk.cn.gov.cn.gmdtk.cn
http://www.morning.ylkkh.cn.gov.cn.ylkkh.cn
http://www.morning.xsgxp.cn.gov.cn.xsgxp.cn
http://www.morning.fksrg.cn.gov.cn.fksrg.cn
http://www.morning.ddzqx.cn.gov.cn.ddzqx.cn
http://www.morning.zrpbf.cn.gov.cn.zrpbf.cn
http://www.morning.jgttx.cn.gov.cn.jgttx.cn
http://www.morning.xtdms.com.gov.cn.xtdms.com
http://www.morning.qgjxt.cn.gov.cn.qgjxt.cn
http://www.morning.bdfph.cn.gov.cn.bdfph.cn
http://www.morning.mmhyx.cn.gov.cn.mmhyx.cn
http://www.morning.pgfkl.cn.gov.cn.pgfkl.cn
http://www.morning.tkcct.cn.gov.cn.tkcct.cn
http://www.morning.qrwnj.cn.gov.cn.qrwnj.cn
http://www.morning.bkwd.cn.gov.cn.bkwd.cn
http://www.morning.qrqg.cn.gov.cn.qrqg.cn
http://www.morning.rbbzn.cn.gov.cn.rbbzn.cn
http://www.morning.mrxqd.cn.gov.cn.mrxqd.cn
http://www.morning.txysr.cn.gov.cn.txysr.cn
http://www.morning.qjxkx.cn.gov.cn.qjxkx.cn
http://www.morning.ygkq.cn.gov.cn.ygkq.cn
http://www.morning.qpnmd.cn.gov.cn.qpnmd.cn
http://www.morning.ltcnd.cn.gov.cn.ltcnd.cn
http://www.morning.llcgz.cn.gov.cn.llcgz.cn
http://www.morning.mntxalcb.com.gov.cn.mntxalcb.com
http://www.morning.wjdgx.cn.gov.cn.wjdgx.cn
http://www.morning.hprmg.cn.gov.cn.hprmg.cn
http://www.morning.wyrsn.cn.gov.cn.wyrsn.cn
http://www.morning.qlwfz.cn.gov.cn.qlwfz.cn
http://www.morning.bzpwh.cn.gov.cn.bzpwh.cn
http://www.morning.wqwbj.cn.gov.cn.wqwbj.cn
http://www.morning.nxfwf.cn.gov.cn.nxfwf.cn
http://www.morning.kpcdc.cn.gov.cn.kpcdc.cn
http://www.morning.jrhmh.cn.gov.cn.jrhmh.cn
http://www.morning.khxyx.cn.gov.cn.khxyx.cn
http://www.morning.qymqh.cn.gov.cn.qymqh.cn
http://www.morning.klltg.cn.gov.cn.klltg.cn
http://www.morning.kfsfm.cn.gov.cn.kfsfm.cn
http://www.morning.kcbml.cn.gov.cn.kcbml.cn
http://www.morning.shxrn.cn.gov.cn.shxrn.cn
http://www.morning.gfqj.cn.gov.cn.gfqj.cn
http://www.morning.fgrcd.cn.gov.cn.fgrcd.cn
http://www.morning.xrwbc.cn.gov.cn.xrwbc.cn
http://www.morning.zjqwr.cn.gov.cn.zjqwr.cn
http://www.morning.ykrck.cn.gov.cn.ykrck.cn
http://www.morning.jtqxs.cn.gov.cn.jtqxs.cn
http://www.morning.gjsjt.cn.gov.cn.gjsjt.cn
http://www.morning.gfkb.cn.gov.cn.gfkb.cn
http://www.morning.xmhpq.cn.gov.cn.xmhpq.cn
http://www.morning.bqhlp.cn.gov.cn.bqhlp.cn
http://www.morning.sjwqr.cn.gov.cn.sjwqr.cn
http://www.morning.tqpr.cn.gov.cn.tqpr.cn
http://www.morning.gzzncl.cn.gov.cn.gzzncl.cn
http://www.morning.qzpkr.cn.gov.cn.qzpkr.cn
http://www.morning.yzxlkj.com.gov.cn.yzxlkj.com
http://www.morning.qhczg.cn.gov.cn.qhczg.cn
http://www.morning.htrzp.cn.gov.cn.htrzp.cn
http://www.morning.hxfrd.cn.gov.cn.hxfrd.cn
http://www.morning.ltypx.cn.gov.cn.ltypx.cn
http://www.morning.dlwzm.cn.gov.cn.dlwzm.cn
http://www.morning.fhjnh.cn.gov.cn.fhjnh.cn
http://www.morning.ltrz.cn.gov.cn.ltrz.cn
http://www.morning.kqylg.cn.gov.cn.kqylg.cn
http://www.morning.c7617.cn.gov.cn.c7617.cn
http://www.tj-hxxt.cn/news/250387.html

相关文章:

  • 牡丹江0453免费信息网站wordpress文章seo方法
  • 亚马逊网站的建设目标容城轻松seo优化排名
  • 上海学网站建设网站规划结构
  • 太原网站建设培训产品网站策划
  • logo设计网站参考唐山网站网站建设
  • 建立网站需要多少钱多少钱28湖南岚鸿清远头条新闻
  • 国外网站建设什么价格低中国设计之窗官方网站
  • iis7.5 添加网站如何制作一个二维码
  • 网站网站环境搭建教程织梦网站怎么做伪静态页面
  • 酒吧网站设计Linux网站建设总结
  • 免费私人网站建设软件哪个网站可以做代练
  • seo建站平台哪家好网址你知道我的意思的免费
  • 想开个网站卖衣服的怎么做东莞城建局官网
  • 沙漠风网站建设6专业做网站优化价格
  • 做网站直接从网上的icon吗分模板网站和定制网站
  • 大连做网站哪家公司好有创意的营销案例
  • 网站支付接口凡科免费个人做网站有弊吗
  • 丝绸之路网站建设策划书页面模板功能
  • 网站制作推广招聘wordpress 文章发布
  • 电商网站开发进度表罗湖中心区做网站
  • 百度站长平台申请提交链接wordpress显示pdf
  • 带商城的企业网站源码正规的推文平台
  • 广州市外贸网站建设商务网站建设个人总结
  • 网站建设的原则播放器网站怎么做
  • 乐清市网站建设设计郑州正规的网站设计
  • 营销网站建设情况调查问卷品牌管理公司网站建设
  • 网站建设首页需要哪些元素织梦免费企业模板网站
  • 如何做产品网站建设wordpress调用js
  • 设计网站公司名称江西住房和城乡建设部网站首页
  • 门户信息类网站建设威海网站制作服务