新时代的技术之spring boot的学习

spring boot

spring boot是由Pivotal团队提供的框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程
该框架使用了特定的方式(继承starter,约定优先于配置)来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域成为领导者
Spring Boot并不是一个框架,从根本上将,它就是一些库的集合
使用springboot的原因:
Spring Boot是为简化Spring项目配置而生,使用它使得jar依赖管理以及应用编译和部署更为简单。Spring Boot提供自动化配置,使用Spring Boot,你只需编写必要的代码和配置必须的属性。
使用Spring Boot,只需20行左右的代码即可生成一个基本的Spring Web应用,并且内置了tomcat,构建的fat Jar包通过Java -jar就可以直接运行
Spring Boot使编码更简单,使配置更简单,使部署更简单,使监控更简单

spring boot的使用

创建一个父项目maven
在pom.xml创建子项目
在这里插入图片描述导包
在父项目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-parent</groupId>
  <artifactId>springboot-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  
   <!-- Spring Boot 父文件 -->
    <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>
        <!-- 热部署 -->
        <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>
    </dependencies>

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

创建一个controller

@RestController
public class HelloController {

	//获取属性配置的值:默认值
	@Value("${spring.name:yy}")
	String name;
	@RequestMapping("/home")
    String home() {
        return "Hello World1111212121212!11"+name;
    }

}

创建一个启动类

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class RunApp {

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

}

@Configuration的注解类标识这个类可以使用Spring IoC容器作为bean定义的来源。@Bean注解告诉Spring,一个带有@Bean的注解方法将返回一个对象,该对象应该被注册为在Spring应用程序上下文中的bean。
@EnableAutoConfiguration:能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。
@ComponentScan:会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。
注意:想热部署就在父类的pom.xml配置

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

注意:要有这个包,不然不能编译成jsp

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

想打成jar包
在pom.xml配置

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

在子项目的resource中创建banner.txt
里面随便写,这是在启动项目中就会加载banner.txt中的东西
在这里插入图片描述
控制台:
在这里插入图片描述
application.properties
可以配置很多的参数
比如端口
在这里插入图片描述
页面默认前缀目录
在这里插入图片描述
响应页面默认后缀
在这里插入图片描述
自定义属性,可以在Controller中读取
在这里插入图片描述
配置自定义属性,可以在controller获取
在这里插入图片描述
@Value({“spring.你定义的属性名:默认值“})
String name
默认值是你在properties的值没有就会有默认值。
Yaml 方式

server:
  port: 8080
name: kd 
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

最后启动测试一下。

springboot-Mybatis

创建好项目,在导包
刚刚已经创建好了一个父项目,在这下面创建一个子项目
在pom.xml配置连接数据库

<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-jdbc</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
	</dependency>

同时在自己的pom.xml配置分页,mybatis依赖

<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>
  </dependencies>

在application.yml配置
开启打印sql日志
连接数据库
注册别名
扫描xml

server:
  port: 8080
name: kd 
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.itsource.model
  mapperLocations: classpath:cn/itsource/dao/Mapper/*.xml
logging:
  level:
    cn:
      itsource: DEBUG

把之前上面用的RunApp.java 代码复制到这个项目中。

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
@MapperScan("cn.itsource.dao")
public class RunApp {

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

}

注意:一定要在类上面打注解@MapperScan(“cn.itsource.dao”)
这是在指定范围扫描dao层,不然在启动之后,controller会报错
在新建controller。

@Controller
public class IndexController {

	@RequestMapping("/")
	public String index(){
		return "index";
	}
	@RequestMapping("/json")
	@ResponseBody
	public Object json(){
		Map<String, Object> map=new HashMap<>();
		map.put("name", "hhh");
		map.put("age", "123");
		return map;
	}
}

dao层,建一个接口类,编写crud方法

@Mapper
public interface IUserDao {

	@Select("select * from t_user")
	public List<User> getAll();
	
	@Select("select * from t_user where id=#{id}")
	public User getById(Long id);
	
	public void save(User user);
	public void del(Long id);
	public void edit(User user);
	public User queryAll(User user);
}

注意可以使用注解和xmlde 方式。
在新建对应的mapper.xml,接口上面打注解Mapper

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.itsource.dao.IUserDao">
  
  <insert id="save">
  	insert into t_user (username,password) values(#{username},#{password})
  </insert>
  <select id="queryAll" resultType="user">
  	select * from t_user
  	<where>
  		<if test="username!=null and username!=''">
  		 and username=#{username}
  		</if>
  		<if test="passowrd!=null and passowrd!=''">
  		 and passowrd=#{passowrd}
  		</if>
  	</where>
  </select>
  <delete id="del">
  	delete from t_user where id=#{id}
  </delete>
  <update id="edit" parameterType="user">
  	update t_user set username=#{username},password=#{password} where id=#{id}
  </update>
</mapper>

新建model

package cn.itsource.model;

public class User {
	private Long id;
	private String username;
	private String  password;
	public Long getId() {
		return id;
	}
	public void setId(Long 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 + "]";
	}
	
	
	
}

新建service层
先接口类

public interface IUserService {
	//查询所有
	public List<User> getAll();
	//分页
	public PageInfo<User> queryPage(Integer pageNum,Integer pageSize);
	//保存
	public void save(User user);
	//删除
	public void del(Long id);
	//编辑
	public void edit(User user);
}

实现类:

@Service
public class UserServiceImpl implements IUserService{

	@Autowired
	IUserDao dao;
	@Override
	public List<User> getAll() {
		return dao.getAll();
	}
	@Override
	public PageInfo<User> queryPage(Integer pageNum, Integer pageSize) {
		PageHelper.startPage(pageNum, pageSize);
		List<User> list = dao.getAll();
		return new PageInfo<>(list);
	}
	@Override
	@Transactional
	public void save(User user) {
		dao.save(user);
		//int i=1/0;
		
	}
	@Override
	@Transactional
	public void del(Long id) {
		dao.del(id);
	}
	@Override
	@Transactional
	public void edit(User user) {
		dao.edit(user);
	}

}

注意:在实现类上面要打注解service ,不然会报错
在增删改的时候,每个方法上面要打注解事务
测试类;

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

	@Autowired
	IUserService userService;
	@Autowired
	IUserDao dao;
	@Test
	public void testName() throws Exception {
		List<User> all = userService.getAll();
		for (User user : all) {
			System.out.println(user);
		}	
	}
	@Test
	public void testName1() throws Exception {
		User user = dao.getById(1L);
		System.out.println(user);
	}
	@Test
	public void testName2() throws Exception {
		User user = new User();
		user.setUsername("hah21");
		user.setPassword("ssasa");
		dao.save(user);
	}
	@Test
	public void testName3() throws Exception {
		PageInfo<User> page = userService.queryPage(1, 2);
		for (User user : page.getList()) {
			System.out.println(user);
		}
	}
	@Test
	public void testName4() throws Exception {
		User user = new User();
		user.setUsername("hah21111");
		user.setPassword("ssasa");
		userService.save(user);
	}
	@Test
	public void testName5() throws Exception {
		User user = new User();
		user.setId(2L);
		user.setUsername("嘻嘻");
		user.setPassword("ssasa111");
		userService.edit(user);
	}
	@Test
	public void testName6() throws Exception {
		userService.del(5L);
	}
	
}

组织的技术打印sql
在maven仓库网站搜索 org.kd
找到mybatis Tool box
地址:https://mvnrepository.com/artifact/org.kd/mybatis-tool-box/1.0-M9
到包

<dependency>
    	<groupId>org.kd</groupId>
    	<artifactId>mybatis-tool-box</artifactId>
    	<version>1.0-M9</version>
	</dependency>

在resource新建mybatisConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" >
<configuration>
	<typeAliases>
		<package name="cn.itsource.model" />
	</typeAliases>


	<plugins>
		<!-- 打印完整sql语句 mysad -->
		<plugin interceptor="org.kd.intercepts.MybatisAutoSql" />
	</plugins>

</configuration

在application.yml配置

server:
  port: 8080
name: kd 
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.itsource.model
  mapperLocations: classpath:cn/itsource/dao/Mapper/*.xml
  configLocation: classpath:mybatisConfig.xml
logging:
  level:
    cn:
      itsource: DEBUG
  
  
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值