spring-boot学习记录

目录

1.eclipse 安装sts的插件
2.spring-boot启动方式
3.项目属性配置
4.thymeleaf视图
5.jpa数据库访问
6.jdbc数据库访问
7.全局异常捕捉
8.freemarker视图
9.添加jsp
10.添加mybatis

1.eclipse 安装sts的插件

在线安装参考路径:https://spring.io/tools/sts/all

 打开eclipse菜单项

Help>Install New SoftWare添加http://dist.springsource.com/release/TOOLS/update/e4.7/ 

勾选所有带有IDE的复选框

Eclipse 安装sts插件

2.spring-boot启动方式

http://blog.csdn.net/my__Sun_/article/details/72866329

1.开发工具右键运行

2.mvn spring-boot:run

3. 先到项目根目录

mvn install
cd target
java -jar   xxxx.jar

 3.项目属性配置

常用配置

application.yml

server:
  context-path: /demo2 #项目名称,默认是/
  port: 8081 #端口

配置参数

方式一.

application.yml

girl: 
  a: A
  b: B is ${girl.a}
controller

@Value("${girl.a}")
private String a;
方式二.

application.yml

boy: 
  id: 1
  name: myname is ${boy.id}
Boy.java

@Component
@ConfigurationProperties(prefix="boy")//在yml中配置以boy开头的配置
public class Boy {
	private Integer id;
	private String name;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}	
}
controller

@Autowired
private Boy boy;
@RequestMapping("/hello")
public String hello() {
	return "hello-2016-12-11.v.0 " +" "+boy.getId() +","+boy.getName();
}


4.thymeleaf视图

pom.xml

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

application.yml

########################################################
###THYMELEAF (ThymeleafAutoConfiguration)
########################################################
#spring.thymeleaf.prefix=classpath:/templates/
#spring.thymeleaf.suffix=.html
#spring.thymeleaf.mode=HTML5
#spring.thymeleaf.encoding=UTF-8
# ;charset=<encoding> is added
#spring.thymeleaf.content-type=text/html 
# set to false for hot refresh
spring.thymeleaf.cache=false #关闭thymeleaf缓存


controller

@Controller
@RequestMapping("/girl")
public class GirlController {
	@RequestMapping(value="/say")
	public String say() {
		return "index";
	}
}
index.html

5.jpa数据库访问

pom.xml

<!-- jpa -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>
application.yml

spring:  
  datasource:
    driver-class-name: com.mysql.jdbc.Driver #数据库连接池
    url: jdbc:mysql://localhost:3306/eshop #数据库url
    username: root #用户名
    password: root #密码
  jpa:
    hibernate:
      ddl-auto: create #如果不存在,就创建表
    show-sql: true #是否显示sql语句

实体

@Entity//使用@Entity进行实体化的持久化操作,当JPA检测到我们的实体类当中有@Entity注解的时候,会在数据库中生成对应的表结构信息。
public class Girl {
	@Id//使用@Id指定主键
	@GeneratedValue//指定主键的生成策略,mysql默认的是自增长
	private Integer id;	
	private String cupSize;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getCupSize() {
		return cupSize;
	}
	public void setCupSize(String cupSize) {
		this.cupSize = cupSize;
	}
	
}


jpa数据库访问

public interface IPersonRepository extends JpaRepository<Girl,Integer>{	
}

controller


CrudRepository接口

接口提供了最基本的对实体类的添删改查操作
 --T save(T entity);//保存单个实体   
  --Iterable<T> save(Iterable<? extends T> entities);//保存集合         
  --T findOne(ID id);//根据id查找实体          
  --boolean exists(ID id);//根据id判断实体是否存在          
  --Iterable<T> findAll();//查询所有实体,不用或慎用!          
  --long count();//查询实体数量          
  --void delete(ID id);//根据Id删除实体          
  --void delete(T entity);//删除一个实体   
  --void delete(Iterable<? extends T> entities);//删除一个实体的集合          
  --void deleteAll();//删除所有实体,不用或慎用! 
PagingAndSortingRepository

该接口提供了分页与排序功能   
 --Iterable<T> findAll(Sort sort); //排序    
--Page<T> findAll(Pageable pageable); //分页查询(含排序功能)
其它接口

JpaRepository:查找所有实体,排序、查找所有实体,执行缓存与数据库同步
JpaSpecificationExecutor:不属于Repository体系,实现一组 JPA Criteria 查询相关的方法,封装  JPA Criteria 查询条件。通常使用匿名内部类的方式来创建该接口的对象。
自定义 Repository:可以自己定义一个MyRepository接口。

6.jdbc数据库访问

在pom.xml加入jdbcTemplate的依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>


如果在JPA已经加入的话,则可以不用引入以上的配置。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>


那么只需要在需要使用的类中加入:
@Resource
private JdbcTemplate jdbcTemplate;


声明为:@Repository,引入JdbcTemplate
public Demo getById(long id){
String sql = "select *from Demo where id=?";
RowMapper<Demo> rowMapper = new BeanPropertyRowMapper<Demo>(Demo.class);
return jdbcTemplate.queryForObject(sql, rowMapper,id);
}

7.全局异常捕捉

在一个项目中的异常我们我们都会统一进行处理的,那么如何进行统一进行处理呢?

新建一个类GlobalDefaultExceptionHandler,
在class注解上@ControllerAdvice,
在方法上注解上@ExceptionHandler(value = Exception.class)

package com.ldgx.eshop.config;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 1.新建一个Class,这里取名为GlobalDefaultExceptionHandler
 * 2.在Class上添加注解,@ControllerAdvice
 * 3.在class中添加一个方法
 * 4.在方法上注解为@ExceptionHandler,拦截相应的一场信息
 * 5.如果返回的是View,方法的返回值是ModelAndView
 * 6.如果返回的是String 或者json数据,那么需要在方法上添加@RequestBody注解
 * @author Administrator
 *
 */
@ControllerAdvice
public class GlobalDefaultExceptionHandler {
	
	
	@ExceptionHandler(value = Exception.class)
	@ResponseBody
	public String defaultExceptionHandler(HttpServletRequest req,Exception e) {
		//如果返回的是String
		return "对不起,服务器繁忙,请稍后再试";
	}
}

8.freemarker视图


pom.xml

<!-- freemarker的依赖配置信息 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
application.yml

server:
  context-path: /demo2 #项目名称,默认是/
  port: 8081 #端口
spring:
  freemarker:
    suffix: .html  #ftl文件名后缀
    #view-names: org.springframework.web.servlet.view.freemarker.FreeMarkerView
    #content-type: text/html; charset=utf-8 #编码
    #expose-request-attributes: true #将请求和会话属性作为变量暴露给FreeMarker模板使用 ,要做到这一点,可以设置exposeRequestAttributes或者exposeSessionAttributes为true
    #expose-session-attributes: true
    #expose-spring-macro-helpers: true # 使用这些宏,必须设置FreeMarkerViewResolver的exposeMacroHelpers属性为true
    #allow-session-override: true
    #cache: true #缓存
    #template-loader-path: classpath:admin # 模板地址,加上classpath,文件就放在src.main.resource.admin下面
    template-loader-path: admin
    

controller中

mv.setViewName("hh");

file1:

文件路径:src/main/resources/templates/hh.ftl

说明:      如果application.yml什么都没有配置,是这个地址

file2

文件路径:src/main/resources/templates/hh.html

说明:    applicaiton.yml中配置spring.freemarker.suffix: .html  #ftl文件名后缀

file3

文件路径:src/main/resources/admin/hh.html

说明:    applicaiton.yml中配置

spring.freemarker.suffix: .html  #ftl文件名后缀

spring.freemarker.template-loader-path: classpath:admin

file4

文件路径:src/main/webapp/admin/hh.html

说明:    applicaiton.yml中配置

spring.freemarker.suffix: .html  #ftl文件名后缀

spring.freemarker.template-loader-path: admin

9.添加jsp

<!-- spring boot parent节点,引入这个之后,在下面和spring boot相关的就不需要引入版本了; -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>

 <!-- 指定一下jdk的版本 ,这里我们使用jdk 1.8 ,默认是1.6 -->
 <java.version>1.8</java.version>

pom.xml

<dependencies>
	<!-- web支持: 1、web mvc; 2、restful; 3、jackjson支持; 4、aop ........ -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>	

	<!-- servlet 依赖. -->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<scope>provided</scope>
	</dependency>
	<!-- JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。 -->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jstl</artifactId>
	</dependency>

	<!-- tomcat 的支持.-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-tomcat</artifactId>
		<scope>provided</scope>
	</dependency>
	<dependency>
		<groupId>org.apache.tomcat.embed</groupId>
		<artifactId>tomcat-embed-jasper</artifactId>
		<scope>provided</scope>
	</dependency>		
	
	
</dependencies>
application.yml

server:
  context-path: /demo2 #项目名称,默认是/
  port: 8081 #端口
spring:
  mvc:
    view:
      prefix: /WEB-INF/jsp/ #页面默认前缀目录
      suffix: .jsp # 响应页面默认后缀

controller

mv.setViewName("hh");
跳转到的文件路径:src/main/webapp/WEB-INF/jsp/hh.jsp

10.添加mybatis

pom.xml

(1)基本依赖,jdk版本号;
(2)mysql驱动,mybatis依赖包,mysql分页PageHelper:

<!-- web支持: 1、web mvc; 2、restful; 3、jackjson支持; 4、aop ........ -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- mysql 数据库驱动. -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>	

<!--mybatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.1</version>
</dependency>

<!-- MyBatis提供了拦截器接口,我们可以实现自己的拦截器,将其作为一个plugin装入到sqlSessionFactory中
Github上有位开发者写了一个分页插件,我觉得使用起来还可以,挺方便的。 
Github项目地址: https://github.com/pagehelper/Mybatis-PageHelper
-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.2</version>
</dependency>
启动类

加@MapperScan注解

package com.ldgx.eshop;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.ldgx.eshop.mapper")//Mapper扫描地址
public class Demo2Application {

	public static void main(String[] args) {
		SpringApplication.run(Demo2Application.class, args);
	}
}
application.yml

server:
  context-path: /demo2 #项目名称,默认是/
  port: 8081 #端口
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/eshop #url
    driver-class-name: com.mysql.jdbc.Driver #驱动
    username: root #用户名
    password: root #密码
    tomcat:
      max-active: 20 #一个线程持有一个连接的最长时间(默认5分钟,单位毫秒),管这个连接是否处于 active 状态,到达时间就会被清除掉。
      max-idle: 8
      min-idle: 8
      initial-size: 10
实体类,表结构也是和实体类一样

package com.ldgx.eshop.entity;
public class Goods {
	private Integer id;
	private Integer admin_id;
	private String name;
	private String remark;
	private String content;
	//getter,setter方法
}
mapper

package com.ldgx.eshop.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.ldgx.eshop.entity.Goods;
public interface GoodsMapper {	
	/**
	 * 根据名称查询
	 * @param name
	 * @return
	 */
	@Select("select * from tbl_goods where name = #{name}")
	public List<Goods> listName(String name);
}
Controller

package com.ldgx.eshop.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ldgx.eshop.entity.Goods;
import com.ldgx.eshop.mapper.GoodsMapper;

@RestController
@RequestMapping("/cc")
public class CController {
	@Autowired
	private GoodsMapper mapper;	
	@RequestMapping("/query")
	public List<Goods> query() {
		return mapper.listName("name2 zangren");
	}
}















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值