学了几天springboot,给我的感觉就是非常好用,这个技术可以说是烂大街的了,但是其作为第一个出现的微服务框架基础也曾风光无限,时至今日大部分java类公司还使用它作为基本的开发框架,因为好用。
学习springboot只需要简单地了解spring的基础知识,因为你也不可能用它开发。
Spring Boot的哲学就是约定大于配置。既然很多东西都是一样的,为什么还要去配置。
1. 通过starter和依赖管理解决依赖问题。
2. 通过自动配置,解决配置复杂问题。
3. 通过内嵌web容器,由应用启动tomcat,而不是tomcat启动应用,来解决部署运行问题。
Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring boot专注于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架;spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring boot来实现。springboot用于单体框架,springcloud用于分布式微服务的开发。
下边是三个学习案例:
Thymeleaf是一个Java类库,他是一个xml/xhtml/html5的模板引擎,可以作为MVC的Web应用层的View层。
1:引入类库
org.springframework.boot
spring-boot-starter-thymeleaf
2:配置模板
#thymeleaf start
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html
#开发时关闭缓存,不然没法看到实时页面
spring.thymeleaf.cache=false
#static 文件夹下的静态文件访问路径
spring.mvc.static-path-pattern=classpath:templates/*hello.html
#thymeleaf end
3:建立view
在resources下的templates下新建hello.html
Title
当然这个是玩具版本。
注意:在控制器上不能使用respondbody,否则跳转不过去,返回的是 hello。
mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,
而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。
mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中
sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并
返回。
采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc 进行了封装,屏蔽了 jdbc api 底层访问细节,使我
们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。
这里操作使用mysql数据库!
1:定义起步依赖
mysql
mysql-connector-java
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.1.1
org.mybatis
mybatis-spring
1.3.2
com.baomidou
mybatis-plus
2.1.9
org.mybatis.spring.boot
mybatis-spring-boot-autoconfigure
1.3.2
2:添加数据库的连接信息
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=1234
3:创建user表
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'zhangsan', '123', '张三');
INSERT INTO `user` VALUES ('2', 'lisi', '123', '李四')
4:创建实体bean
package com;
import java.io.Serializable;
public class User {
// 主键
private Long id;
// 用户名
private String username;
// 密码
private String password;
// 姓名
private String name;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getPassword(){
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
5:编写持久层接口mapper
package com;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
public List queryUserList();
}
6:编写mapper的映射文件
7:添加配置文件
#spring集成Mybatis环境
#pojo别名扫描包
mybatis.type-aliases-package=com.mapper
#加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
#mybatis.config-location=classpath:mybatis-config.xml
结果展示
1:添加起步依赖
org.springframework.boot
spring-boot-starter-data-jpa
2:配置
#JPA Configuration:
spring.jpa.database=MySQL
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
3:创建实体
package com;
import org.springframework.data.jpa.repository.JpaRepository;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.util.List;
//定义映射实体类
@Entity
public class Ppersion {
// 主键
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 用户名
private String username;
// 密码
private String password;
// 姓名
private String name;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword(){
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
4:定义数据访问接口
package com;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
//定义数据访问接口
public interface PersionRepository extends JpaRepository {
public List findAll();
}
看下我docker容器里边的数据库!
总的控制器贴出来
package com;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.List;
//@RestController
@Controller
@RequestMapping(value = "/hello")
public class RunController {
@Autowired
private UserMapper MyuserMapper;
@Value("${person.name}")
private String name;
@Value("${person.age}")
private Integer age;
@RequestMapping(value = "/quick")
public String say(Model mymodel) {
//int no = 1/0;
// throw new MyException("100", "用户密码错误!") ;
//return "hello world!" + "name =" + name + ",age =" + age ;
mymodel.addAttribute("name", "Dear");
return "hello";
}
@Autowired
private PersionRepository MMPERSION;
//测试获取全部的数据
@GetMapping(path="/all")
@ResponseBody
public Iterable getAllUsers() {
return MMPERSION.findAll();
}
@RequestMapping("/queryUser")
@ResponseBody
public List queryUser(){
List users = MyuserMapper.queryUserList();
return users;
}
}