Spring Boot学习笔记
必备条件:
JDK 环境必须是 1.8 及以上
Maven 管理工具 3.2.5 及以上
安装IDEA,并配置Tomcat8.5
使用 idea 快速搭建 Spring Boot步骤
1.新建 Spring Initializr 项目
2.选择默认的 url 点击【Next】,除非你需要自己定义
3.勾选上 Web 模板:
勾选必要的引用,勾选Web、MySql和jdbc
4.创建hellocontroller文件
package com.example.springbootdemo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "hello spring boot";
}
}
5.修改application.properties文件
-
如果不配置则遇到错误:无法配置DataSource:未指定'url'属性,也无法配置嵌入数据源。
-
配置
#访问根路径
#应用名称
spring.application.name=springboot-demo
#访问端口号
server.port=8080
#编码格式
server.tomcat.uri-encoding=utf-8
#数据库相关配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://IP:3306/数据库名
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
#session生命周期
server.servlet.session.timeout=30m
6.完成项目生成后,需要一段时间下载Maven依赖,可以看到右下角进度条。耐心等完,避免不必要的错误。
7.启动
SpringbootApplication 这个类中,然后右键点击运行。 可以看到我们的 Tomcat 运行在 8080 端口,我们来访问 “/hello” 地址试一下
项目结构:
初步完成,可运行,浏览器可见如下
访问mysql数据库
前面已经在application.properties中添加了数据库信息,只需要编写数据库访问类即可
使用JdbcTemplate访问数据库,验证数据库连接成功
获取基础的数据库信息
改一下HelloController,使其读取数据库中users表中第一行的username,并返回给浏览器
@Autowired
JdbcTemplate jdbcTemplate;
@RequestMapping(value="/hello", method= RequestMethod.GET)
public String index() {
String sql = "select username from users where id = ?";
String value = (String) jdbcTemplate.queryForObject(
sql, new Object[]{1}, String.class);
return "Hello " + value;
}
//http://localhost:8080/getMapById?id=1
@RequestMapping(value = "/getMapById", method = RequestMethod.GET)
public Map<String, Object> getMapById(Integer id) {
String sql = "SELECT * FROM users WHERE ID = ?";
Map<String, Object> map = jdbcTemplate.queryForMap(sql, id);
return map;
}
进一步可以返回Map<String, Object>,在浏览器得到的结果是json格式
如果想要返回类(其实也是json)
创建实体类
package com.example.springbootdemo.bean;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserBean implements RowMapper<UserBean> {
private int id;
private String userName;
@Override
public String toString() {
return " ID: " + this.getId() + " UserName: " + this.getUserName();
}
public UserBean() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String user_name) {
this.userName = user_name;
}
@Override
public UserBean mapRow(ResultSet resultSet, int i) throws SQLException {
UserBean user = new UserBean();
user.setId(resultSet.getInt("id"));
user.setUserName(resultSet.getString("username"));
return user;
}
}
Controller部分代码
//http://localhost:8080/getMapById?id=1
@RequestMapping(value = "/getUserById", method = RequestMethod.GET)
public UserBean getUserById(Integer id) {
String sql = "SELECT * FROM users WHERE ID = ?";
UserBean user= jdbcTemplate.queryForObject(sql,new UserBean(),new Object[]{id});
return user;
}
最终浏览器结果
更好的方式
这样结构更合理
UserBean的代码:
package com.example.springbootdemo.bean;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserBean {
private int id;
private String userName;
public UserBean() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String user_name) {
this.userName = user_name;
}
}
Dao\UserRowMapper.java文件
package com.example.springbootdemo.dao;
import com.example.springbootdemo.bean.UserBean;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserRowMapper implements RowMapper<UserBean> {
@Override
public UserBean mapRow(ResultSet resultSet, int i) throws SQLException {
UserBean user = new UserBean();
user.setId(resultSet.getInt("id"));
user.setUserName(resultSet.getString("username"));
return user;
}
}
Controller\HelloController.java文件
//http://localhost:8080/getMapById?id=1
@RequestMapping(value = "/getUserById", method = RequestMethod.GET)
public UserBean getUserById(Integer id) {
String sql = "SELECT * FROM users WHERE ID = ?";
UserBean user = jdbcTemplate.queryForObject(sql, new UserRowMapper(), new Object[]{id});
return user;
}