第一篇: 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, 然后才成功。
四.创建项目并输入项目参数
这两步就照着网站上的描述做就可以了。需要注意的是得先把三中的项目给退掉。
五.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地址返回的结果。
测试
第二篇: SPRINGBOOT系列教材 (十四)- 持久层支持 - SPRINGBOOT中如何运用MYBATIS 简单例子
一. 1~4 创建数据库,数据表等准备操作
二. 先运行,看到效果,再学习
导入时还是以Maven导入
三. 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方法
六. 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。
九. 测试
第三篇: SPRINGBOOT系列教材 (十五)- 持久层支持 - MYBATIS-XML方式
本教程用Mybatis加xml写SQL语句操作数据库。
上一篇是用Mybatis注解方式。
一. 先运行,看到效果,再执行
效果:
二. 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>
id="findAll"
表明本<select>
标签实现的是findAll()
方法,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的简单名称。
五. 测试
第四篇:SPRINGBOOT系列教材 (十七)- CRUD+分页 - SPRINGBOOT使用MYBATIS实现完整的 增删改查 CRUD和分页
一.Mybatis CRUD和分页
- Mybatis可以用来直接在Mapper中(Mybatis注解方式)写SQL语句实现增删改查
- 分页用Mybatis中的插件PageHelper实现。文章参考PageHelper插件
二. 先运行,看到效果,再执行
三. 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>