对四篇教程的学习.md

第一篇: SPRINGBOOT系列教材 (一)- 基础 - SPRINGBOOT入门-在ECLIPSE中创建跑得起来的SPRINGBOOT项目,非STS插件方式

一.引言

1.SpringBoot是什么,和ssm相比有什么优势?

Spring Boot是一个开源的Java Web框架,用于通过Java搭建Web应用;
优势:

  • 简化配置。ssm需要引入一大堆jar包配置SpringMVC, Spring, Mybatis的环境,而Spring Boot则帮我们配好,专注于应用本身
  • 内嵌服务器:Spring Boot直接内嵌一个服务器,如Tomcat等,所以无需再手动打开Tomcat

文章地址:SPRINGBOOT系列教材 (一)- 基础 - SPRINGBOOT入门-在ECLIPSE中创建跑得起来的SPRINGBOOT项目,非STS插件方式

标题都好理解,除了最后一句,STS插件方式是什么?
STS(Spring Tools Suite)是基于Eclipse的开发环境,用于开发Spring应用程序。

二. 1~4步

前四步都是一些版本,插件问题,到第五步才开始写项目。
反正迄今为止eclipse, Tomtact,jar包啥的都是从how2java网站上下载的,应该不会有版本问题。

三. 先运行,看到效果,再学习

此处导入项目的方式与之前有点区别。之前是直接import已有项目就完了,此处由于是Maven,有专门的方法。参考MAVEN系列教材 (十一)- 使用ECLIPSE导入一个MAVEN风格的SSM项目

此处遇到一些困难;比如8080端口被占用,我就把原先tomcat中的项目移出;比如益处后访问http://127.0.0.1:8080/hello还是404, 我就重启了一下eclipse, 然后才成功。
image

四.创建项目并输入项目参数

这两步就照着网站上的描述做就可以了。需要注意的是得先把三中的项目给退掉。

五.pom.xml

pom.xml指定了当前项目用到的jar包,然后由Maven找到所有的包。
pom.xml的主要作用是定义本项目的配置和依赖。
配置就是Spring Boot需要的一大堆jar包,而每一个会指定一个特定的jar包。配置和依赖的相同点都是指定jar包,然后让Maven自动下载并管理这些jar包。

六. Appllication.java

这是本项目的主方法,运行时会自动打开tomcat, 默认端口8080。由于导入的项目用的端口也是8080, 所以有必要先把原来的项目退出。

七.HelloController.java

这是一个控制器类,类中定义了一个方法返回Hello Spring Boot!, 也就是url地址返回的结果。

测试

image



第二篇: SPRINGBOOT系列教材 (十四)- 持久层支持 - SPRINGBOOT中如何运用MYBATIS 简单例子

一. 1~4 创建数据库,数据表等准备操作

image

二. 先运行,看到效果,再学习

导入时还是以Maven导入
image

三. application.properties

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

本文件的主要作用是指定数据库是how2java, 用户名以及密码。

四. pom.xml

配置文件就是为Spring Boot提供各种配置和依赖。相比与上一个项目,本项目还用到了Mybatis和Mysql, 因此新增对这两个技术的依赖。

<!-- mybatis -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.1.1</version>
</dependency>
<!-- mysql -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.21</version>
</dependency>

五. Category

Category对应着category_表的一行,在这个类中定义in, name两个变量以及它们的get和set方法
image

六. CategoryMapper

package com.how2java.springboot.mapper;
 
import java.util.List;
 
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
 
import com.how2java.springboot.pojo.Category;
 
@Mapper
public interface CategoryMapper {
 
    @Select("select * from category_ ")
    List<Category> findAll();
 
}

首先interface表明这是一个接口,@Mapper指定接口类型,@Select调用findAll()方法,执行SQL语句。
所以说,调用findAll()方法是再CategoryMapper里面写,通过执行List<Category> findAll();在其他文件里面写的SQL语句

七. CategoryController

在CategoryMapper中有一行代码List<Category> findAll();

在CategoryController中通过

  • List<Category> cs=categoryMapper.findAll();接受listCategory映射
  • m.addAttribute("cs", cs);获取所有的分类数据并放入Model中
  • return "listCategory"; 跳转到listCategory

所以CategoryMapper相当于老板,老板提要求要做findAll()函数,CategoryController就去具体实施,然后用listCategory这个ppt展现成果。

八. listCategory.jsp

<table align='center' border='1' cellspacing='0'>
    <tr>
        <td>id</td>
        <td>name</td>
    </tr>
    <c:forEach items="${cs}" var="c" varStatus="st">
        <tr>
            <td>${c.id}</td>
            <td>${c.name}</td>
                
        </tr>
    </c:forEach>
</table>

表头是id和name, 表的实际内容用<c:forEach>遍历categoryController传递过来的集合cs, 代码:<c:forEach items="${cs}" var="c" varStatus="st">
集合是cs, 单条数据是c,每次遍历输出c的id和name。

九. 测试

image



第三篇: SPRINGBOOT系列教材 (十五)- 持久层支持 - MYBATIS-XML方式

本教程用Mybatis加xml写SQL语句操作数据库。
上一篇是用Mybatis注解方式。

一. 先运行,看到效果,再执行

效果:
image

二. CategoryMapper

  • 原先的Mybatis注解方式中CategoryMapper是这样写的,核心代码如下:
@Mapper
public interface CategoryMapper {
 
    @Select("select * from category_ ")
    List<Category> findAll();
 
}
  • 现在的Mybatis加xml方式中的CategoryMapper去掉了sql语句的注解,核心代码如下:
@Mapper
public interface CategoryMapper {
 
    List<Category> findAll();
 
}

可以看到,相比于Mybatis注解方式,Mybatis加xml省去了@Select这个注解。

三. Category.xml

  • 原来的Mybatis注解方式是不需要Category.xml文件的,因为 @Select("select * from category_ ")就是Mybatis在Mapper中自由得写
    SQL语句的体现。

  • 现在的Mybatis加xml方式新增了Category.xml文件,在这个文件里写SQL语句。其实就是实现了Mapper与SQL语句的分离。
    (BTW,我觉得还不如Mybatis注解方式来的直观)

核心代码如下:

<mapper namespace="com.how2java.springboot.mapper.CategoryMapper">
        <select id="findAll" resultType="Category">
            select * from category_
        </select>   
    </mapper>
  1. id="findAll"表明本<select>标签实现的是findAll()方法,
  2. resultType="Category"表明<select>标签返回的对象是Categor这个实体类

四. application.properties

相比于Mybatis注解方式中的applicatjion.properties, Mybatis加xml方式新增了两行代码,新增后的整个文件的代码如下:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 
mybatis.mapper-locations=classpath:com/how2java/springboot/mapper/*.xml
mybatis.type-aliases-package=com.how2java.springboot.pojo

先指明要操作数据库是how2java, 并给出用户名和密码,新增的两行的作用是指明需要到哪去找xml文件,并指定别名。
因为新增的Category.xml文件是和CategoryMapper一个包,都在mapper包下,所以需要到mapper包中找xml文件。


mybatis.type-aliases-package=com.how2java.springboot.pojo运行开发者在Category.xml中使用该包中类的简单名称去
配置这些类。
具体来讲,在Category.xml中,resultType="Category"中的Category就是Category.java的简单名称。

五. 测试

image



第四篇:SPRINGBOOT系列教材 (十七)- CRUD+分页 - SPRINGBOOT使用MYBATIS实现完整的 增删改查 CRUD和分页

一.Mybatis CRUD和分页

  • Mybatis可以用来直接在Mapper中(Mybatis注解方式)写SQL语句实现增删改查
  • 分页用Mybatis中的插件PageHelper实现。文章参考PageHelper插件

二. 先运行,看到效果,再执行

image

三. pom.xml

pom.xml就是用来支持整个SpringBoot项目的配置和依赖的。由于本项目使用到了PageHelper,所以有必要在pom.xml中添加相应的依赖。
具体代码如下:

<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper</artifactId>
	<version>4.1.6</version>
</dependency>

四.PageHelperConfig

本文件用来配置PageHelper插件的具体参数,比如页码,计数,合理性等。
核心代码如下:

@Configuration  // 表明这是一个配置文件
public class PageHelperConfig {
 
    @Bean  // 说明本PageHelper将会创建并且配置一个实体类
    public PageHelper pageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties p = new Properties();
        p.setProperty("offsetAsPageNum", "true");
        p.setProperty("rowBoundsWithCount", "true");
        p.setProperty("reasonable", "true");
        pageHelper.setProperties(p);
        return pageHelper;
    }
}

五. CategoryMapper

核心代码:

@Mapper
public interface CategoryMapper {
 
    @Select("select * from category_ ")
    List<Category> findAll();
     
    @Insert(" insert into category_ ( name ) values (#{name}) ")
    public int save(Category category); 
     
    @Delete(" delete from category_ where id= #{id} ")
    public void delete(int id);
         
    @Select("select * from category_ where id= #{id} ")
    public Category get(int id);
       
    @Update("update category_ set name=#{name} where id=#{id} ")
    public int update(Category category); 
 
}

显然,此处直接用了Mybatis注解方式来写SQL语句。

六. CategoryController

就如同上一篇讲的,Mapper是老板,只提方法,剩下的具体实现交给员工Controller。
在具体的实现上,先为Controller添加增删改查的映射,然后修改查询的映射,再给pageHelper的具体参数赋值,
最后返回listCategory显示页码效果。

核心代码如下:

@Controller
public class CategoryController {
    @Autowired CategoryMapper categoryMapper;
      
    @RequestMapping("/addCategory")
    public String listCategory(Category c) throws Exception {
        categoryMapper.save(c);
        return "redirect:listCategory";
    }
    @RequestMapping("/deleteCategory")
    public String deleteCategory(Category c) throws Exception {
        categoryMapper.delete(c.getId());
        return "redirect:listCategory";
    }
    @RequestMapping("/updateCategory")
    public String updateCategory(Category c) throws Exception {
        categoryMapper.update(c);
        return "redirect:listCategory";
    }
    @RequestMapping("/editCategory")
    public String listCategory(int id,Model m) throws Exception {
        Category c= categoryMapper.get(id);
        m.addAttribute("c", c);
        return "editCategory";
    }
     
    @RequestMapping("/listCategory")
    public String listCategory(Model m,@RequestParam(value = "start", defaultValue = "0") int start,@RequestParam(value = "size", defaultValue = "5") int size) throws Exception {
        PageHelper.startPage(start,size,"id desc");
        List<Category> cs=categoryMapper.findAll();
        PageInfo<Category> page = new PageInfo<>(cs);
        m.addAttribute("page", page);        
        return "listCategory";
    }
     
}

七.listCategory.jsp

就是在原来的基础上新增了对分页进行控制的相关代码

<div>
                <a href="?start=1">[首  页]</a>
            <a href="?start=${page.pageNum-1}">[上一页]</a>
            <a href="?start=${page.pageNum+1}">[下一页]</a>
            <a href="?start=${page.pages}">[末  页]</a>
    </div>

八. editCategory.jsp

listCategroy.jsp用来写表格主体,editCategory.jsp用来写name和提交按钮。

<form action="updateCategory" method="post">
  
name: <input name="name" value="${c.name}"> <br>
  
<input name="id" type="hidden" value="${c.id}">
<button type="submit">提交</button>
  
</form>

九.测试

image

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值