-1、ssm基础完结,纵观前十篇,写的都是比较简单而常用的整合方式,下面将会继续深入学习spring以及全家桶。
0、springboot简介:
知乎: https://zhuanlan.zhihu.com/p/24957789
拜读大神文章可能比较好: http://tengj.top/tags/Spring-Boot/
1、新建springBoot项目:
如何创建一个springBoot项目呢?有两种方式,第一种是直接在idea上创建:
第二种方式是上官方网站上 https://start.spring.io/ 直接下载:
两种方式创建完之后的结构是:
2、注意到,我创建的时候引入了web,就是直接整合了springMvc,现在就可以简单地进行测试了:
写了一个controller进行测试:
@RestController
@RequestMapping("/test")
public class TestController {
@RequestMapping("")
public String test(){
return "hello spring-boot";
}
}
启动主函数,输入网址 http://localhost:8080/test 页面显示 hello spring-boot。好了,真核springMvc就完毕了。就是这么简单,这里简单说明一下这个程序,不同的地方是用了 @RestController 可以直接向前台页面传递json或者字符串等数据,不需要 @ResponseBody了。
3、关于配置文件
我们一般不适用默认的 application.properties ,而是将他的后缀改为 application.yml ,这样写起来的格式会简洁很多。
我可以在里面配置端口:
server:
port: 8888
这样,重启后只能访问8888端口了。
4、整合Mybatis:
首先引入依赖:
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>1.2.0version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>1.2.12version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.0.18version>
dependency>
<dependency>
<groupId>org.mybatis.generatorgroupId>
<artifactId>mybatis-generator-coreartifactId>
<version>1.3.2version>
dependency>
application.yml配置如下:
server:
port: 8888
#Spring
spring:
application:
name: test
#profile
profiles:
active: dev
#datasource
datasource:
# druid
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
#mybatis
mybatis:
mapper-locations: classpath:com/oursnail/**/**.xml
type-aliases-package: classpath:com.oursnail.**.entity
主要是配置了用测试环境下的数据库还是生产环境下的数据库,所以我们还需要定义一个application-dev.yml,专门配置一下数据库连接。
spring:
datasource:
name: dev
url: jdbc:mysql://localhost:3306/test
username: root
password: root
还有就是数据源本身的一些设置,这个暂时不用理会。 最后就是mybatis扫描的包的位置。按照我的目录结构来看,xml和entity在这样的路径下面,所以个人按照个人的继续配置即可。
好了,Mybatis就配置成功了。
5、下面随便整一张表,比如我这里整了一张 t_test 表,里面就是三个字段:一个是自动递增的主键 id ,一个 name ,一个 age ,当然这个起成 t_user 可能更加合适点吧。
6、我刚才在pom下面配置了自动生成代码插件,当然这个插件具体怎么用,我已经说明过了,请关注我前面基础整合的文章。
好了,自动生成实体类和xml以及dao基础接口了,下面就是测试几个方法。
7、TestService:
@Service
public class TestServiceImpl implements TestService{
@Autowired
private TestMapper testMapper;
//根据id获取用户
@Override
public Test showTest(int id) {
return testMapper.selectByPrimaryKey(id);
}
//获取所有用户
@Override
public List tests() {
return testMapper.selectAll();
}
//测试添加一个用户的功能
@Override
public void testAdd(Test test) {
testMapper.insertSelective(test);
}
//测试添加相同id用户,看事务能不能起作用
@Transactional
@Override
public void testTra() {
Test test1 = new Test();
test1.setId(4);
test1.setName("hh");
test1.setAge(12);
testMapper.insertSelective(test1);
Test test2 = new Test();
test2.setId(4);
test2.setName("swg");
test2.setAge(22);
testMapper.insertSelective(test2);
}
}
8、controller:
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
private TestService testService;
@RequestMapping("/getTestById/{id}")
public Test getTest(@PathVariable int id){
Test test = testService.showTest(id);
return test;
}
@RequestMapping("/tests")
public List tests(){
List tests = testService.tests();
return tests;
}
@RequestMapping("/addNew")
public void testAdd(){
Test test1 = new Test();
test1.setName("王五");
test1.setAge(32);
testService.testAdd(test1);
}
@RequestMapping("/testTra")
public void testTra(){
testService.testTra();
}
}
9、页面可以输入对应的路径进行测试,可以先测试添加用户的方法,要不然咋显示呢?
但是直接启动是报错的,提示我们无法找到mapper依赖,查看编译文件,都是编译进去的。这就很奇怪了。最后,我在mapper接口上增加一个注解:
@Mapper
10、springboot整合ssm完毕,源码下载.
11、与Thymeleaf整合
项目结构:
引入依赖:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
dependency>
创建实体类:
public class User {
private int id;
private String username;
private int age;
private String url;
...省略get set方法
}
controller:
@RestController
@RequestMapping("/user")
public class UserController {
@RequestMapping("/users")
public ModelAndView users(){
ModelAndView mv = new ModelAndView("/index");
List users = new ArrayList();
User user = new User(1,"sss",12,"www.oursnail.xin");
users.add(user);
user = new User(2,"dd",21,"www.oursnail.xin");
users.add(user);
user = new User(3,"das",13,"www.oursnail.xin");
users.add(user);
mv.addObject("users",users);
return mv;
}
}
页面放在templates下,index.html:
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>learn Resourcestitle>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
head>
<body>
<div style="text-align: center;margin:0 auto;width: 1000px; ">
<h1>springboot 学习h1>
<table width="100%" border="1" cellspacing="1" cellpadding="0">
<tr>
<td>idtd>
<td>姓名td>
<td>年龄td>
<td>链接td>
tr>
<tr th:each="user : ${users}">
<td th:text="${user.id}"/>
<td th:text="${user.username}"/>
<td th:text="${user.age}"/>
<td><a th:href="${user.url}" target="_blank">点我a>td>
tr>
table>
div>
body>
html>
12、与jsp整合
看看就行了吧,我觉得Jsp真的不应该再出现在springboot里面了。。。
推荐 http://tengj.top/2017/03/13/springboot5/
13、热部署
参照 http://tengj.top/2017/06/01/springboot10/