Spring Boot入门

Spring Boot简介

1.什么是Spring Boot
Spring Boot是由Pivotal团队提供的框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式(继承starter,约定优先于配置)来进行配置,从而使开发人员不再需要定义样板化的配置。从根本上将,它就是一些库的集合,maven或者gradle项目导入相应依赖即可使用Spring Boot,而且无需自行管理这些库的版本。
2.为什么要使用Spring Boot
Spring Boot是为简化Spring项目配置而生,使用它使得jar依赖管理以及应用编译和部署更为简单。Spring Boot提供自动化配置,使用Spring Boot,你只需编写必要的代码和配置必须的属性。
使用Spring Boot,只需20行左右的代码即可生成一个基本的Spring Web应用,并且内置了tomcat,构建的fat Jar包通过Java -jar就可以直接运行。
如下特性使得Spring Boot非常契合微服务的概念,可以结合Spring Boot与Spring Cloud和Docker技术来构建微服务并部署到云端:
一个可执行jar即为一个独立服务很容易加载到容器,每个服务可以在自己的容器(例如docker)中运行
通过一个脚本就可以实现配置与部署,很适合云端部署,并且自动扩展也更容易
简单而言,即Spring Boot使编码更简单,使配置更简单,使部署更简单,使监控更简单!
3.Spring Boot提供哪些功能
在这里插入图片描述

Spring boot入门

1.创建一个Maven项目
在这里插入图片描述
2.maven中导入SpringBoot依赖包

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>springboot-parents</groupId>
	<artifactId>springboot-parents</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>

	<!-- 修改版本 -->
	<properties>
		<java.version>1.8</java.version>
	</properties>

	<!-- springboot依赖包 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.10.RELEASE</version>
	</parent>

	<!--Spring Boot web依赖 -->
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

	</dependencies>

	<!--可执行的 jar -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

注意:修改版本项目出现红叉解决方式:右键选择项目下拉框中的maven,Update Project…更新即可
3.编码测试
新建一个controller类

package cn.zg.boot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class IndexTest {

	@RequestMapping("/index")
	@ResponseBody
	public String getIndex(){
		return "welcome!!!";
	}
}

新建一个启动类,需要将启动类放在其他类上面更加方便

package cn.zg.boot;

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

@SpringBootApplication(scanBasePackages="cn.zg.boot")
@MapperScan("cn.zg.boot.dao")
public class RunApp {
	public static void main(String[] args) {
		SpringApplication.run(RunApp.class, args);
	}
}

运行启动类,能访问页面表示成功
启动成功标志
在这里插入图片描述访问页面
在这里插入图片描述
4.热部署
自动重新启动应用,节约时间
添加依赖包:

	<!-- 热部署 -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
		<optional>true</optional>
	</dependency>

使用SpringBoot集成Mybatis框架

1.在pom.xml中引入相关依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>springboot-parents</groupId>
	<artifactId>springboot-parents</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>

	<!-- 修改版本 -->
	<properties>
		<java.version>1.8</java.version>
	</properties>

	<!-- springboot依赖包 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.10.RELEASE</version>
	</parent>


	<dependencies>
		<!-- spring-boot mybatis依赖 -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.0</version>
		</dependency>

		<!-- spring boot mybatis 分页插件 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.2</version>
		</dependency>
		<!-- 打印sql语句 -->
		<dependency>
			<groupId>org.kd</groupId>
			<artifactId>mybatis-tool-box</artifactId>
			<version>1.0-M9</version>
		</dependency>

		<!--Spring Boot web -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- 热部署 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional>
		</dependency>

		<!--必须有才能编译jsp -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
			<scope>provided</scope>
		</dependency>

		<!-- 连接数据库 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

		<!-- Junilt4测试 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
		</dependency>

	</dependencies>

	<!--可执行的 jar -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

application.yml配置文件

spring:
  mvc:
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/spring-boot-demo?useUnicode=true&characterEncoding=utf-8
    username: root
    password: 123456
mybatis:
  typeAliasesPackage: cn.zg.boot.model
  mapperLocations: classpath:cn/zg/boot/dao/mapper/*.xml
  configLocation: classpath:mybatisConfig.xml
logging:
  level:
    cn:
      zg: DEBUG

增删该查
在这里插入图片描述

package cn.zg.boot.model;

public class User {

	private Integer id;
	private String username;
	private String password;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	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;
	}
	
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
	}
	
}
package cn.zg.boot.dao;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import cn.zg.boot.model.User;

@Mapper
public interface UserDao {

	// 查询所有
	@Select("select * from t_user")
	public List<User> findAll();

	// 查询一条数据
	@Select("select * from t_user where id=#{id}")
	public User findOne(Long id);

	// 添加
	@Insert("insert into t_user(username,password) values(#{username},#{password})")
	public void add(User user);

	// 刪除
	@Delete("delete from t_user where id = #{id}")
	public void delete(Long id);

	// 修改
	@Update("update t_user set username = #{username} , password=#{password} where id =#{id}")
	public void update(User user);
}

package cn.zg.boot.service;

import java.util.List;

import cn.zg.boot.model.User;

public interface IUserService {

	// 查询所有
	public List<User> findAll();

	// 查询一条
	public User findOne(Long id);

	// 添加
	public void add(User user);

	// 删除
	public void delete(Long id);

	// 修改
	public void update(User user);
	
	//分页查询
	PageInfo<User> queryPage(Integer pageNum , Integer pageSize);
}
package cn.zg.boot.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.zg.boot.dao.UserDao;
import cn.zg.boot.model.User;
import cn.zg.boot.service.IUserService;

@Service
//开启事务
@Transactional(readOnly=true)
public class UserServiceImpl implements IUserService {

	@Autowired
	UserDao userDao;

	@Override
	public List<User> findAll() {
		return userDao.findAll();
	}

	@Override
	public User findOne(Long id) {
		return userDao.findOne(id);
	}

	@Override
	@Transactional
	public void add(User user) {
		userDao.add(user);
	}

	@Override
	@Transactional
	public void delete(Long id) {
		userDao.delete(id);
	}

	@Override
	@Transactional
	public void update(User user) {
		userDao.update(user);
	}

	@Override
	public PageInfo<User> queryPage(Integer pageNum, Integer pageSize) {
		Page<Object> startPage = PageHelper.startPage(pageNum, pageSize);
		List<User> findAll = userDao.findAll();
		return new PageInfo<>(findAll); 
	}
}

在这里插入图片描述

package test;

import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import cn.zg.boot.RunApp;
import cn.zg.boot.model.User;
import cn.zg.boot.service.IUserService;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = RunApp.class)
public class MybatisTest {

	@Autowired
	IUserService iUserService;

	// 查询所有
	@Test
	public void testFindAll() throws Exception {
		List<User> findAll = iUserService.findAll();
		for (User user : findAll) {
			System.out.println(user);
		}
	}

	// 查询一条
	@Test
	public void testFindOne() throws Exception {
		User one = iUserService.findOne(1L);
		System.out.println(one);
	}

	// 添加
	@Test
	public void testAdd() throws Exception {
		User user = new User();
		user.setUsername("zgg");
		user.setPassword("xxxxxxx");
		iUserService.add(user);
	}

	// 删除
	@Test
	public void testDelect() throws Exception {
		iUserService.delete(15L);	
	}
	
	//修改
	@Test
	public void testUpdate() throws Exception {
		User user = new User();
		user.setId(4);
		user.setUsername("aaaaaaa");
		iUserService.update(user);
	}
	
	// 分页查询
	@Test
	public void testPage() throws Exception {
		PageInfo<User> queryPage = iUserService.queryPage(0, 2);
		//总条数
		long total = queryPage.getTotal();
		System.out.println(total);
		//每页显示条数
		List<User> list = queryPage.getList();
		for (User user : list) {
			System.out.println(user);
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值