2020.12.5–尚硅谷SSM高级整合

写在前面:本人是看完框神ssm框架系列,然后找的其他的ssm整合的资源来练手的,这个尚硅谷的是用eclipse写的,我觉得可以接受就练习了,需要资源的可以私信我
基本配置:

jdk 1.8

idea 2018

mysql 5.6

maven 3.6.2

tomcat 9.0.30

1,导入依赖

<dependencies><!--常用其他依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version></dependency><!-- https://mvnrepository.com/artifact/junit/junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.1</version><scope>test</scope></dependency><!--数据库驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!-- 数据库连接池 --><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency><!--Servlet - JSP --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--Mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.3</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.2</version></dependency><!--Spring--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.9.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.1.9.RELEASE</version></dependency>
</dependencies>

2,前端框架

1,jQuery

使用下载版的

<script src="${pageContext.request.contextPath}/static/jsp/jquery-3.5.1.min.js"></script>

2,Bootstrap

使用在线cdn

 <%--引入 Bootstrap,美化界面--%><link href="http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

3,常用的xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"></beans>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration></configuration>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper></mapper>

4,mybatis的逆向工程

mybatis generator

1,导入依赖

<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
<dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.7</version>
</dependency>

2,mybatis逆向工程xml文件配置

注意

  • 需要注意的是xml配置文件的位置,要和pom文件是一级别的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><context id="DB2Tables" targetRuntime="MyBatis3"><!--1,配置数据库连接--><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/ssm_crud"userId="root"password="123456"></jdbcConnection><javaTypeResolver ><property name="forceBigDecimals" value="false" /></javaTypeResolver><!--2,指定javabean生成位置--><javaModelGeneratortargetPackage="com.zp.pojo"targetProject=".\src\main\java"><property name="enableSubPackages" value="true" /><property name="trimStrings" value="true" /></javaModelGenerator><!--3,指定sql映射文件生成位置--><sqlMapGeneratortargetPackage="com.zp.dao"targetProject=".\src\main\java"><property name="enableSubPackages" value="true" /></sqlMapGenerator><!--4,指定dao接口生成位置--><javaClientGenerator type="XMLMAPPER"targetPackage="com.zp.dao"targetProject=".\src\main\java"><property name="enableSubPackages" value="true" /></javaClientGenerator><!--5,table:指定每个表的生成策略--><table tableName="tbl_emp" domainObjectName="Employee"/><table tableName="tbl_dept" domainObjectName="Department"/></context>
</generatorConfiguration>

3,java运行文件

注意点:

  • File configFile = new File(“mg.xml”);
  • 这个是找到逆向工程配置文件的位置
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;import java.io.File;
import java.util.ArrayList;
import java.util.List;public class bgTest {public static void main(String[] args)throws Exception{List<String> warnings = new ArrayList<String>();boolean overwrite = true;File configFile = new File("mg.xml");ConfigurationParser cp = new ConfigurationParser(warnings);Configuration config = cp.parseConfiguration(configFile);DefaultShellCallback callback = new DefaultShellCallback(overwrite);MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);myBatisGenerator.generate(null);}
}

4,运行

  • 运行成功就能生成响应的bean,dao接口以及mapper文件了

5,测试Mapper

  • 先看下生辰的Mapper文件,如果需要修改下

  • 因为需要联表查询,所以要加入引用对象

  • 测试使用spring的单元测试

    • 导入依赖

    • <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
      <dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.2.9.RELEASE</version><scope>test</scope>
      </dependency>
  • 需要注意的是,因为导入了新的依赖,所以要在lib中引入依赖,

  • 同时还要注意在spring各个依赖之间可能会因为版本问题而报错

6,spring 的单元测试

第10集:修改mybatis逆向工程所产生的mapper

1,新建两个带部门信息的查询

思考:字符集映射 result 和 association 的 区别 ;

 <!--思考,id,result的区别--><association property="department" javaType="department"><id column="dept_id" property="deptId"/><result column="dept_name" property="deptName"/></association>

第11集:测试mapper

1,推荐使用spring的单元测试,可以自动注入我们需要的组件

  • 原生的测试方法

    • 1,创建spring IOC 容器
    • 2,从容器中获取Mapper
  • 使用spring 单元测试的步骤

    • 1,导入spring test 依赖
    • 2,使用 @ContextConfiguration 注解来创建 IOC 容器 其中的 location 方法会定位配置文件的位置; 以及使用 @RunWith 来指定使用哪种单元测试 这里使用 :@RunWith(SpringJUnit4ClassRunner.class)
    • 3,3,直接@AutoWired 要使用的组件(AutoWired : spring 的自动装配)
  • 批量插入

    • 1,首先在配置文件中写一个可以批量插入的SqlSession,就是SqlSessionTemplate

    • <!--5,创建一个可以执行批量操作的sqlsession;这是spring 和 mybatis 整合使用的SqlSessionTemplate--><bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/><constructor-arg name="executorType" value="BATCH"/></bean>
      

第12集 :查询(采用分页)

  • 1,访问index.jsp 页面
  • 2,index.jsp 页面发出查询员工列表请求
  • 3,EmployeeController 来接收请求,查出员工数据
  • 4,来到list.jsp 页面来展示

分页查询

  • 1,在pom中导入pagehelper的依赖

  •   <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.10</version></dependency>
    
  • 2,在mybatis的配置文件中加入plugins(插件)(按照分页使用文档来)

  •  <!--3,分页pagehelper5--><plugins><plugin interceptor="com.github.pagehelper.PageInterceptor"><!--分页参数合理化--><property name="reasonable" value="value1"/></plugin></plugins>
    
  • 3,就是具体的使用方法了

13集 :使用spring单元测试测试分页请求

  • MockMvc :意思是虚拟的mvc请求,获得处理结果

  • import org.mybatis.generator.api.MyBatisGenerator;
    import org.mybatis.generator.config.Configuration;
    import org.mybatis.generator.config.xml.ConfigurationParser;
    import org.mybatis.generator.internal.DefaultShellCallback;import java.io.File;
    import java.util.ArrayList;
    import java.util.List;public class bgTest {public static void main(String[] args)throws Exception{List<String> warnings = new ArrayList<String>();boolean overwrite = true;File configFile = new File("mg.xml");ConfigurationParser cp = new ConfigurationParser(warnings);Configuration config = cp.parseConfiguration(configFile);DefaultShellCallback callback = new DefaultShellCallback(overwrite);MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);myBatisGenerator.generate(null);}
    }

第14集 搭建分页页面

  • web路径问题

  • 不以/开始的相对路径,找资源,以当前路径为基准,经常容易出现问题

  • 以/开始的相对路径,找资源,以服务器路径为基准(http://localhost:3306); 需要加上项目名开始,

    • http://localhost:3306/crud
  • <%/*java代码,来获取项目路径*/pageContext.setAttribute("APP_PATH",request.getContextPath());%>
    
  • 使用bootstrap完成员工列表页面

  • 引用bootstrap

    • <%--引入 Bootstrap,美化界面--%>
      <link href="http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
      

第15集 显示分页数据

  • 首先大致分三步;(使用bootstrap)

  • 首先是当前页码高亮

  • 点击页码跳转

  • 前一页,后一页,首页,末页的逻辑实现

  •  <%--2,分页栏--%><div class="col-md-6"><nav aria-label="Page navigation"><ul class="pagination"><li><a href="${APP_PATH}/emps?pn=1">首页</a></li><c:if test="${pageInfo.hasPreviousPage}"><li><a href="${APP_PATH}/emps?pn=${pageInfo.pageNum-1}" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li></c:if><c:forEach items="${pageInfo.navigatepageNums}" var="page_Num"><c:if test="${pageInfo.pageNum== page_Num}"><li class="active"><a href="#">${page_Num}</a></li></c:if><c:if test="${pageInfo.pageNum != page_Num}"><li><a href="${APP_PATH}/emps?pn=${page_Num}">${page_Num}</a></li></c:if></c:forEach><c:if test="${pageInfo.hasNextPage}"><li><a href="${APP_PATH}/emps?pn=${pageInfo.pageNum+1}" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li></c:if><li><a href="${APP_PATH}/emps?pn=${pageInfo.pages}">末页</a></li></ul></nav></div>
    

第16集 使用json查询

  • 原因是B/S的缺陷,如果客户端不是浏览器,相对比较麻烦
  • 查询 ajax
  • 1,index.jsp 页面直接发送ajax请求进行员工分页数据的查询
  • 2,服务器将查出的数据,以json字符串的形式返回给浏览器
  • 3,浏览器收到json字符串,可以使用js对json进行解析,使用js通过dom增删改来改变页面
  • 4,返回json,实现客户端的无关性(意思就是无论客户端是什么形式,都可以正常请求和响应)
  • 注意点
    • 使用json(需要导入Jackson Databind 依赖)

第17集 使用ajax重新构建index首页

  • <%--引入 Bootstrap,美化界面--%>
    <link href="http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <%--引入jquery:(本地引入模式)--%>
    <script src="${pageContext.request.contextPath}/static/js/jquery-3.5.1.min.js"></script>
  • append() 与 appendTo()

  • //append()方法执行完成以后返回的还是原来的方法 (比如下例,返回到

  • //同时需要加入要拼接到的地方(appendTo())

  • .appendTo("#emps_table tbody");
    

第18集 查询 使用ajax构建分页条

  • //3,解析并显示分页条function build_page_nav(result) {//page_nav_area 要插入的地址//ul 是li 的父元素var ul = $("<ul></ul>").addClass("pagination");var FirstPageLi = $("<li></li>").append($("<a></a>").append("首页").attr("href","#"));var prePageLi = $("<li></li>").append($("<a></a>").append("&laquo;"));var nextPageLi = $("<li></li>").append($("<a></a>").append("&raquo;"));var NextPageLi = $("<li></li>").append($("<a></a>").append("末页").attr("href","#"));//添加首页和前一页的提示ul.append(FirstPageLi).append(prePageLi);// 取出来的是页码号$.each(result.extend.PageInfo.navigatepageNums,function (index,item) {//index :是下标 item :是要遍历的元素var NumLi = $("<li></li>").append($("<a></a>").append(item));//遍历中给ul添加li页码ul.append(NumLi);})//添加末页和下一页的提示ul.append(nextPageLi).append(NextPageLi);//把ul添加到nav中(nav指的是分页0)var navEle = $("<nav></nav>").append(ul);//添加要拼接到的地址navEle.appendTo("#page_nav_area")}
    
  • jquery 语法,可以查看jquery的开发手册

  • attr()是用来 attr(“href”,"#") 实现超链接这样的

  • 其次就是使用ajax,jquery 语法来拼接的时候,要注意整体的构成位置

第19集 查询 实现分页条的点击事件以及具体逻辑

  • 1,首先要实现 页码的禁用和激活状态(即页面的效果显示)

  • 链接在不同情况下可以定制。你可以给不能点击的链接添加 .disabled 类、给当前页添加 .active 类。

  • if (result.extend.PageInfo.hasPreviousPage == false){FirstPageLi.addClass("disabled");prePageLi.addClass("disabled");}
    
  • if (result.extend.PageInfo.hasNextPage == false) {nextPageLi.addClass("disabled");NextPageLi.addClass("disabled");}
    
  • if (result.extend.PageInfo.pageNum == item) {NumLi.addClass("active");}
    
  • 2,实现页面的动作 ,即添加点击跳转事件

  • //点击跳转
    NumLi.click(function () {to_page(item);});
    
  • 如果只是这样写的话会出现之前的数据也出现在页面上

  • 修改:在点击刷新之前先清空之前的数据

  • //在页面刷新之前先清空之前的数据$("#emps_table tbody").empty();//这是清空员工列表
    $("#page_info_area").empty();//这是清空分页数据$("#page_nav_area").empty();//这是清空分页条
    
  • 然后是实现点击首页末页,上一页下一页

  •   //为元素添加点击翻页事件//FirstPageLi:点击跳转首页FirstPageLi.click(function () {to_page(1);});//prePageLi :点击跳转前一页prePageLi.click(function () {to_page(result.extend.PageInfo.pageNum-1);});//nextPageLi :点击跳转下一页nextPageLi.click(function () {to_page(result.extend.PageInfo.pageNum+1);});//NextPageLi :点击跳转到最后一页NextPageLi.click(function () {to_page(result.extend.PageInfo.pages);});
    
  • 最后出现的问题是 :虽然写了判断首页等禁用的逻辑,但是因为添加了点击事件,尽管是出现不能点击的提示,但是点击依然会发出请求而且分页信息也会更新,所以

  • reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
  • 在mybatis的配置文件里添加一个分页合理化,将其值设置为true

  • <!--3,分页pagehelper5--><plugins><plugin interceptor="com.github.pagehelper.PageInterceptor"><!--分页参数合理化--><property name="reasonable" value="true"/></plugin></plugins>
    
  • 最后直接把判断是否有末页等逻辑与点击事件结合一起,当判断没有下一页的时候直接没有点击事件,有下一页的时候才能有点击事件

  • //判断时候有下一页和末页if (result.extend.PageInfo.hasNextPage == false) {nextPageLi.addClass("disabled");NextPageLi.addClass("disabled");}else{//nextPageLi :点击跳转下一页nextPageLi.click(function () {to_page(result.extend.PageInfo.pageNum+1);});//NextPageLi :点击跳转到最后一页NextPageLi.click(function () {to_page(result.extend.PageInfo.pages);});}
    

第20集 实现新增

  • 1,在index.jsp 页面点击“新增”

  • 2,弹出新增对话框

  • 3,去数据库查询部门列表,显示在对话框中

  • 4,用户输入数据完成保存

  • 我出现的问题,由于这里的新增是使用bootstrap的js的插件来实现的,我以为引入了bootstrap的css的cdn就完事了,但是在引入js的插件以后运行并不成功,在浏览器的调试界面显示js插件引入出现错误,于是我又返回bootstrap官网查看,在检查完js插件使用并没有任何问题,于是我再次进行调试还是出现了错误,于是我又看了下官网的教程,发现css和js插件是需要分别引入的,而且在引入js插件之前是需要把jquery的引入的

  • <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) --><script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script><!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 --><script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
    
  • 使用bootstrap 提供的 css样式来填充 首页新增按钮的模态框

  • <!-- 首页新增按钮的模态框 -->
    <div class="modal fade" id="empAddBtnModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button><h4 class="modal-title" id="myModalLabel">新增员工</h4></div><div class="modal-body"><%--表单--%><form class="form-horizontal"><div class="form-group"><label  class="col-sm-2 control-label">empName</label><div class="col-sm-10"><input type="text" name="empName" class="form-control" id="input_add_empName" placeholder="empName"></div></div><div class="form-group"><label  class="col-sm-2 control-label">email</label><div class="col-sm-10"><input type="text" name="email" class="form-control" id="input_add_email" placeholder="email"></div></div><%--复选框--%><div class="form-group"><label  class="col-sm-2 control-label">gender</label><div class="col-sm-10"><label class="radio-inline"><input type="radio" name="inlineRadioOptions" id="input_add_gender1" value="M" checked="checked"> 男</label><label class="radio-inline"><input type="radio" name="inlineRadioOptions" id="input_add_gender2" value="F"> 女</label></div></div><%--下拉列表--%><div class="form-group"><label  class="col-sm-2 control-label">email</label><div class="col-sm-4"><select class="form-control"></select></div></div></form></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">关闭</button><button type="button" class="btn btn-primary">保存</button></div></div></div>
    </div>
    

第21集 实现模态框中下拉框选择部门信息

  • 1,查出部门信息,显示在下拉框中

    • 写一个查询部门信息的方法,并且绑定在点击新增的按钮上

    •   //这里是点击新增按钮弹出模态框$("#emp_add_btn_modal").click(function () {getDepts();$("#empAddBtnModal").modal({//发送ajax请求,查出部门信息,显示在下拉列表中//弹出模态框backdrop:"static"});});//查出部门信息,显示在下拉列表中function getDepts() {$.ajax({url:"${APP_PATH}/depts",type:"GET",success:function (result) {// console.log(result);//{code: 100, msg: "处理成功!",…}// extend: {depts: [{deptId: 1, deptName: "开发部"}, {deptId: 2, deptName: "测试部"}]}$.each(result.extend.depts,function () {var optionEle = $("<option></option>").append(this.deptName).attr("value",this.deptId);optionEle.appendTo( $("#select_add_dept"));});}});}
      
    • 创建部门的控制类,创建部门的service以及业务实现类,并调用查询方法

    • //DepartmentController 中写的
      /** 返回所有的部门信息* */@RequestMapping("/depts")@ResponseBodypublic Msg getDepts(){//查出所有部门信息List<Department> list = departmentService.getDepts();return Msg.success().add("depts",list);}
      
    • DepartmentService 中没啥好写的

    •   List<Department> getDepts();//就是创建一个新的方法
      
    • //这是DepartmentServiceImpl中的
      public List<Department> getDepts() {List<Department> list = departmentMapper.selectByExample(null);return list;}
      
    • 注意点,由于我使用的是配置文件注册的

    • <!--2,注入spring容器--><bean id="EmployeeServiceImpl" class="com.zp.service.EmployeeServiceImpl"><property name="employeeMapper" ref="employeeMapper"/></bean>
      
    • 所以要手动把部门添加到spring容器中

    • <!--2,注入spring容器--><bean id="EmployeeServiceImpl" class="com.zp.service.EmployeeServiceImpl"><property name="employeeMapper" ref="employeeMapper"/></bean><bean id="DepartmentServiceImpl" class="com.zp.service.DepartmentServiceImpl"><property name="departmentMapper" ref="departmentMapper"/></bean>
      
    • 其中我最开始的时候使用的是@Service,注解的方式,爆了一个空指针的异常,具体是因为啥我现在也没有头绪

    • 最后就是把得到的部门的信息在下拉框中遍历出来

    •  $.each(result.extend.depts,function () {var optionEle = $("<option></option>").append(this.deptName).attr("value",this.deptId);optionEle.appendTo( $("#select_add_dept"));});
      
    • 其中在选择拼接到的地址的时候,除了**KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲select_add_dept…("#empAddBtnModal select") ,不过也是因为我们这个模态框的特殊,因为它只用了这一个下拉框,所以可以不用id

99,出现的新点

  • 1,mybatis的逆向工程
  • 2,spring 的单元测试
  • 3,数据的分页显示

尚硅谷SSM高级整合相关推荐

  1. 尚硅谷MySQL高级JAVA版

    尚硅谷MySQL高级JAVA版 1.MySQL环境 1.1.环境安装 1.2.安装位置 1.3.修改字符集 1.4.配置文件 2.MySQL逻辑架构 3.存储引擎 4.SQL性能下降的原因 5.SQL ...

  2. SSM高级整合-crud

    学无止境,项目相关的视频: 登录 - 谷粒学苑 - Java培训|大数据培训|前端培训|HTML5培训|Linux运维培训_程序员一站式IT在线学习平台 - Powered By EduSoho 一. ...

  3. 尚硅谷JavaScript高级教程(javascript实战进阶)学习笔记

    前言 这个是我学习过程中的笔记,分享给大家,希望对大家有用. 学习内容是尚硅谷JavaScript高级教程(javascript实战进阶),这里是视频链接. 我在前面有两篇对于web前端HTML和CS ...

  4. 尚硅谷MySQL高级学习笔记 -- 1.MySQL 的架构介绍

    1.MySQL 简介 什么是 MySQL? MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中 ...

  5. 【JVM】最全笔记(黑马+尚硅谷+张龙整合笔记)

    本身整合了如下视频的笔记,并进行了整理:尚硅谷周阳.张龙.黑马程序员 黑马ppt非常好:https://download.csdn.net/download/hancoder/12834607 本文及 ...

  6. SSM高级整合项目实战

    SSM-CRUD ssm:SpringMVC+Spring+MyBatis CRUD: Create(创建)Retrieve(查询)Update(更新)Delete(删除) ps:此项目笔者写了很详细 ...

  7. 尚硅谷-SpringBoot高级-检索-Elasticsearch快速入门

    前面我们安装好了ElasticSearch,我以后就简称他为ES,而一些人还不知道基本的使用,那我们接下来做一个快速入门,了解一下他的使用方法,以及一些基本概念,方便我们后来整合,那么要学习ES最好的 ...

  8. SSM高级整合_非Maven控制版本下SSM高级整合

    一.环境搭建 1.创建动态web工程 2.引入jar包 3.创建目录结构 4.创建数据库的配置文件(.properties) jdbc.driver=com.mysql.jdbc.Driver jdb ...

  9. 尚硅谷MySQL高级学习笔记

    数据库MySQL学习笔记高级篇 文章目录 数据库MySQL学习笔记高级篇 写在前面 1. mysql的架构介绍 mysql简介 概述 高级Mysql mysqlLinux版的安装 mysql配置文件 ...

最新文章

  1. 高分文章精选 | 纳米孔宏基因组测序的表现
  2. 卷积网络基础知识---Group Convolution分组卷积
  3. BZOJ 2502: 清理雪道 [最小流]
  4. android 刷机 备份,安卓刷机后如何还原以前ROM和系统备份
  5. 史上最轻量K8s发行版,赋能边缘计算
  6. php 添加内链插件,ecshop自动内链插件seo优化插件
  7. 机器人学习--各种学习资源(初稿)
  8. asp.net core输出中文乱码的问题
  9. android字符串复制到剪贴板
  10. pandas学习笔记五之pandas合并
  11. 一文带你解读Volcano架构设计与原理
  12. Android刷新当前页面
  13. IDEA 常用设置 与 常用操作(一)
  14. java not present_Java 8的可选的function.ifPresent和if-not-present的功能风格?
  15. 项目意义、必要性分析及需求分析的区别
  16. matlab数学实验课件5,matlab_intro_西安交通大学-数学实验教案_ppt_大学课件预览_高等教育资讯网...
  17. python租房_【Python】租房经历总结—–我是如何2天找到合适租房的(房东直租)简单粗暴...
  18. ABP 使用HttpClient调用WebAPI授权问题Unauthorized
  19. 某笔试的一道简单题目
  20. 移动开发者周刊第一期

热门文章

  1. sap项目部署到服务器,本地项目部署到云服务器
  2. 高德地图API简单使用——地名转经纬度
  3. Intellij IDEA)- git - 创建项目
  4. 第15届(2018)全国大学生信息安全与对抗技术竞赛(ISCC2018)通知
  5. 健身中心健身管理系统的设计与实现(源码+数据脚本+论文+技术文档)
  6. 机器学习:非监督学习
  7. VQA系列论文(五)
  8. 【STM32F407】第4章 RTX5操作系统移植(MDK AC5)
  9. STM32CubeMX-HAL库开发笔记(常用语句)-基于Proteus仿真
  10. 制作价目表,用小程序快速制作属于自己的价目表