Spring-Boot学习笔记二

 Spring-Boot的实现

我们不需要配置文件,直接编写Controller类即可

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

 

@RestController

public class HelloWorldController {

 

@RequestMapping("info")

public String info() {

return "Hello world!";

}

 

}

 

@RestController注解:其实就是@Controller和@ResponseBody注解加在一起

 

启动方式一:启动之前编写的引导类即可

启动方式二:使用Maven命令spring-boot:run执行即可

选择 Maven Build

 

在浏览器地址栏输入http://localhost:8080/info 即可看到运行结果

 

2.6. 热部署

我们在开发中反复修改类、页面等资源,每次修改后都是需要重新启动才生效,这样每次启动都很麻烦,浪费了大量的时间。

 

能不能在我修改代码后不重启就能生效呢?可以,由于Spring Boot应用只是普通的Java应用,所以JVM热交换(hot-swapping)也能开箱即用。不过JVM热交换能替换的字节码有限制,想要更彻底的解决方案可以使用Spring Loaded项目或JRebel。 spring-boot-devtools 模块也支持应用快速重启(restart)。

 

我们只需要在pom.xml加入如下配置即可

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-devtools</artifactId>

</dependency>

 

3. SpringBoot整合

3.1. 整合Spring Data JPA

3.1.1. 需求

使用Spring Boot + Spring MVC + Spring Data JPA + EasyUI 框架组合实现部门列表查询,效果如下:

 

3.1.2. 环境准备

3.1.2.1. 导入数据库表

在MySQL数据库执行以下语句

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT,

  `user_name` varchar(100) DEFAULT NULL COMMENT '用户名',

  `password` varchar(100) DEFAULT NULL COMMENT '密码',

  `name` varchar(100) DEFAULT NULL COMMENT '姓名',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

 

INSERT INTO `user` VALUES ('1', 'zhangsan', '123456', '张三');

INSERT INTO `user` VALUES ('2', 'lisi', '123456', '李四');

INSERT INTO `user` VALUES ('3', 'wangwu', '123456', '王五');

INSERT INTO `user` VALUES ('4', 'zhangwei', '123456', '张伟');

INSERT INTO `user` VALUES ('5', 'lina', '123456', '李娜');

INSERT INTO `user` VALUES ('6', 'lilei', '123456', '李磊');

 

3.1.2.2. 创建Maven工程

cnn-info(打jar包),在pom.xml中进行如下配置

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.4.4.RELEASE</version>

</parent>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

<version>1.4.4.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-devtools</artifactId>

<version>1.4.4.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

<version>1.4.4.RELEASE</version>

</dependency>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.6</version>

</dependency>

</dependencies>

 

3.1.2.3. 加入Spring-Boot配置文件

在src/main/resources 下添加application.properties 配置文件,内容如下:

#DB Configuration:

spring.datasource.driverClassName=com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/taotao

spring.datasource.username=root

spring.datasource.password=root

 

#JPA Configuration:

spring.jpa.database=MySQL

spring.jpa.show-sql=true

spring.jpa.generate-ddl=true

spring.jpa.hibernate.ddl-auto=update

spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy

 

此文件用于覆盖Spring Boot的默认配置,完整的配置信息参考“附录2”

 

3.1.3. 后端实现

3.1.3.1. 创建实体类

import javax.persistence.Entity;

import javax.persistence.Id;

 

@Entity

public class User {

@Id

private Long id;

private String userName;

private String password;

private String name;

 

//添加 get 和set 方法

}

 

3.1.3.2. 创建DAO接口

import org.springframework.data.jpa.repository.JpaRepository;

import cn.cnn.info.pojo.User;

 

public interface UserDao extends JpaRepository<User, Long> {

}

 

3.1.3.3. 创建业务逻辑接口

import java.util.List;

import cn.cnn.info.pojo.User;

 

public interface UserService {

List<User> findAll();

}

 

3.1.3.4. 创建业务逻辑实现类

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import cn.cnn.info.dao.UserDao;

import cn.cnn.info.pojo.User;

import cn.cnn.info.service.UserService;

 

@Service

public class UserServiceImpl implements UserService {

 

@Autowired

private UserDao userDao;

 

@Override

public List<User> findAll() {

List<User> list = this.userDao.findAll();

return list;

}

}

 

3.1.3.5. 创建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 cn.cnn.info.pojo.User;

import cn.cnn.info.service.UserService;

 

@RestController

@RequestMapping("user")

public class UserControlelr {

 

@Autowired

private UserService userService;

 

@RequestMapping("list")

public List<User> queryUserAll() {

List<User> list = this.userService.findAll();

return list;

}

 

}

 

3.1.3.6. 创建引导类

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

 

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

 

}

 

运行引导类Application,打开浏览器输入http://127.0.0.1:8080/user/list

3.1.4. 前端实现

把资料中的static文件夹,拷贝到src/main/resources路径下

 

浏览器地址栏输入:http://127.0.0.1:8080/user.html,效果如下

 

运行引导类Application

 

3.2. 整合MyBatis

3.2.1. 简单整合

3.2.1.1. 加入依赖

在pom.xml中加入以下依赖

<!-- SpringBoot的Mybatis启动器 -->

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

<version>1.1.1</version>

</dependency>

 

3.2.1.2. 编写Mapper

和之前的方式一样,只是多了两个注解

@Mapper:声明Mapper接口

@Select:声明这个接口所需要使用的sql,当然,有查询的注解,肯定就有增删改的注解。

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.Select;

import cn.cnn.info.pojo.User;

 

@Mapper

public interface UserMapper {

 

@Select("select * from user where name like '%${value}%'")

public List<User> queryUserByName(String name);

 

}

 

3.2.1.3. 编写Service和Controller

添加Service调用Mapper

@Service

public class UserServiceImpl implements UserService {

 

@Autowired

private UserDao userDao;

 

@Autowired

private UserMapper userMapper;

 

@Override

public List<User> findAll() {

List<User> list = this.userDao.findAll();

return list;

}

 

@Override

public List<User> queryUserByName(String name) {

List<User> list = this.userMapper.queryUserByName(name);

return list;

}

 

}

 

 

修改Controller

@RestController

@RequestMapping("user")

public class UserControlelr {

 

@Autowired

private UserService userService;

 

@RequestMapping("list")

public List<User> queryUserAll() {

List<User> list = this.userService.findAll();

return list;

}

 

@RequestMapping("list/{name}")

public List<User> queryUserAll(@PathVariable String name) {

List<User> list = this.userService.queryUserByName(name);

return list;

}

 

}

 

3.2.1.4. 测试

浏览器地址栏输入:http://127.0.0.1:8080/user/list/张

显示效果:

 

posted @ 2020-11-08 19:20  江丰  阅读(81)  评论(0)    收藏  举报