如何抄袭网站,南通做网站优化公司,购物网站开发实例,临沂做网站首选一. SpringBoot介绍 
1.1. 引言 
为了使用SSM框架去开发, 准备SSM框架的模板配置 为了使Spring整合第三方框架, 单独的去编写xml文件 导致SSM项目后期xml文件特别多, 维护xml文件的成本是很高的 SSM工程部署也是很麻烦, 依赖第三方的容器 SSM开发方式很是笨重 
1.2 SpringBoot …一. SpringBoot介绍 
1.1. 引言 
为了使用SSM框架去开发, 准备SSM框架的模板配置 为了使Spring整合第三方框架, 单独的去编写xml文件 导致SSM项目后期xml文件特别多, 维护xml文件的成本是很高的 SSM工程部署也是很麻烦, 依赖第三方的容器 SSM开发方式很是笨重 
1.2 SpringBoot 
SpringBoot是由Pivota团队研发的,. SpringBoot并不是一门新技术, 只是将之前常用的Spring, SpringMVC, MyBatis等常用的框架封装到了一起, 帮助你隐藏这些框架的实现细节, 实现敏捷开发 SpringBoot就是一个工具集 SpringBoot的特点: 
SpringBoot不需要模板化的配置SpringBoot在整合第三方框架时, 只需要导入响应的starter依赖包, 就自动整合了SpringBoot默认只有一个properties配置文件, 不推荐使用xml, 后期会采用Java的文件去编写配置信息SpringBoot工程在部署时, 采用的是jar包的方式, 内部自动依赖Tomcat容器, 提供了多环境的配置后期要学习的SpringCloud需要建立在SpringBoot的基础上 
二. SpringBoot快速入门 
2.1 快速构建SpringBoot 
IDEA中使用Spring Initializr创建SpringBoot项目 创建过程和创建Maven项目区别不大 中间可以选择语言(默认Java), 打包方式(默认Jar), Java版本(默认最新版,我手动改为Java8了), 还有各种依赖的选择(一般选Web) 第一次创建SpringBoot工程时, 会下载大量的依赖, 一定要确保Maven已经配置了私服, 不然可能会下载失败 创建完成后删除目前不需要的文件, 只留下.idea,src目录和pom.xml,以及.iml, .gitignore文件 如果创建过程中没有勾选Web, 则需要在pom.xml中修改依赖 把spring-boot-starter修改为spring-boot-starter-web即可 然后编写Controller进行测试 
package com.dz.springboot_study.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;Controller
RequestMapping(/hello)
public class HelloController {RequestMapping(/hello)ResponseBodypublic String hello() {return Hello SpringBoot!;}
}启动SpringBoot工程(运行启动类中的main方法) 
2.2 SpringBoot的目录结构 
pom.xml文件 指定了一个父工程: 指定当前工程为SpringBoot, 帮助我们声明了starter依赖的版本 项目的元数据: 包名, 项目名, 版本号 指定了properties的信息: 指定了java版本为1.8 导入依赖: 默认情况导入spring-boot-starter, spring-boot-starter-test 插件: spring-boot-maven-plugin .gitignore文件: 默认帮我们忽略一些文件和目录 src目录 
-src-main-java-包名启动类.java		  #需要将controller类, 放在启动类的子包中或者同级目录下-resources-static					#存放静态资源的-templates  			#存放模板页面的application.properties	#SpringBoot提供的唯一配置文件(可以改为yaml或yml的格式)-test	#为了测试2.3 SpringBoot两种启动方式 
运行启动类中的main方法即可运行SpringBoot工程 采用jar包的方式 将当前项目打包成一个jar文件 通过java -jar jar文件 
三. SpringBoot常用注解 
3.1 Configuration和Bean 
之前使用SSM去开发时, 在xml文件中编写bean标签, 但是在SpringBoot不推荐使用xml文件 导入lombok依赖(正常使用lombok还需在IDEA中下载插件) 
!--lombok--
dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId
/dependencyConfiguration注解相当于bean标签 Bean注解相当于bean标签 id“方法名 | 注解中的name属性” class“方法的返回结果” Configuration//代表当前类是一个配置类 
public class UserConfig {Bean(name  user1)  //构建一个实例, 放进Spring容器中public User user() {return new User(张三,18,true);}/** 以上写法相当于在.xml文件中的* beans*   bean iduser1 classcom.dz.pojo.User/* /beans* */
}3.2 SpringBootApplication 
SpringBootApplication就是一个组合注解SpringBootConfiguration就是Configuration注解, 代表启动类就是一个配置类EnableAutoConfiguration是用来实现自动装配的, SpringBoot工程启动时, 运行一个SpringFactoriesLoader的类, 加载META-INF/spring.factories配置类(已经开启的), 通过SpringFactoriesLoader中的load方法, 以while循环的方式, 一个一个加载好处: 无需编写大量的整合配置信息, 只需按照SpringBoot提供好的约定去整合即可坏处: 如果说我们导入了一个starter依赖, 那么就需要填写其对应的配置信息,否则就会报错手动关闭自动装配指定内容: SpringBootApplication(exclude  QuartzAutoConfiguration.class)ComponentScan就相当于context:component-scan base-Package“包名” / 帮助扫描注解的 
四. SpringBoot常用配置 
4.1 SpringBoot的配置文件格式 
SpringBoot配置文件支持properties和yml, 甚至还支持json 更推荐使用yml文件格式 yml文件, 会根据换行和缩进帮助我们管理配置文件的所在位置 yml文件, 相比properties更轻量级一些 yml文件的劣势: 严格遵循换行和缩进 在填写value时, 一定要在: 后面加上一个空格 4.2 多环境配置 在application.yml中添加一个配置项 
spring:profiles:active: 环境名在resources目录下, 创建多个application-环境名 .yml 文件即可 在部署工程时 通过java -jar jar文件 --spring.profiles.active环境 
4.3 引入外部配置文件信息 
和传统的SSM方式一样, 通过Value的注解去获取properties/yml文件中的内容 如果在yml文件中需要编写大量的自定义配置, 并且具有统一的前缀时, 采用如下方式 
Component
ConfigurationProperties(prefix  person)
Data
public class Person {private String name;private Integer age;private Boolean happy;private Date birth;private MapString, Object map;private ListObject list;private Dog dog;}        
person:name: 张三age: ${random.int}happy: truebirth: 2000/01/01map: {k1: v1,k2: v2}list: [code,music,girl]dog:name: 小黑age: 2使用ConfigurationProperties注解时会出现爆红提示, 但不影响使用, 如想要消除爆红, 导入以下依赖 
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional
/dependency4.4 热加载 
导入以下依赖 
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdoptionaltrue/optional
/dependency修改IDEA设置 Settings  Build,Execution  Compiler  勾选Build project automatically 之后项目内容修改后,只需Build一下即可,无需重新部署项目 
五. SpringBoot整合MyBatis 
5.1 xml方式整合MyBatis 
5.1.1 导入依赖 
!--mysql驱动--
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId
/dependency
!--druid连接池--
dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.1.10/version
/dependency
!--mybatis--
dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion1.3.2/version
/dependency5.1.2 准备实体类 数据库表准备完成后, 可以手动创建实体类, 也可以使用IDEA自动创建实体类, 这里我们使用第二种 IDEA连接MySQL, 出现时区问题加上Asia/Shanghai 选中要建实体类的表  右键选择Scripted Extensions  Generate Pojos.groovy, 然后选择实体类创建的位置 //部门表 
package com.dz.pojo;import lombok.Data;import java.io.Serializable;Data
public class TDepartment implements Serializable {private Integer id;private String name;private String location;}
//员工表
package com.dz.pojo;import lombok.Data;import java.io.Serializable;Data
public class TEmployee implements Serializable {private Integer id;private String name;private double salary;private TDepartment department;}5.1.3 准备Mapper接口 
package com.dz.mapper;import com.dz.pojo.TEmployee;
import org.springframework.stereotype.Repository;import java.util.List;Repository(empMapper)
public interface EmpMapper {ListTEmployee findAll();
}5.1.4 扫描Mapper接口所在的包 在启动类上添加注解, 扫描Mapper接口所在的包 
MapperScan(basePackages  com.dz.mapper)5.1.5 准备Mapper映射文件 resources目录下创建mapper目录, 用来存放Mapper映射文件 EmpMapper.xml 
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.dz.mapper.EmpMapperresultMap idemp_resultMap typeTEmployeeid columnid propertyid/result columnname propertyname/result columnsalary propertysalary/association propertydepartment javaTypeTDepartmentid columndpt_id propertyid/result columndpt_name propertyname/result columnlocation propertylocation//association/resultMap!--ListTEmployee findAll();--select idfindAll resultMapemp_resultMapselect emp.id,emp.name,salary,dpt.id dpt_id,dpt.name dpt_name,dpt.locationfrom t_employee empjoin t_department dpton emp.dept_iddpt.id/select
/mapper5.1.6 添加yml文件配置信息 MyBatis设置 扫描映射文件 配置实体类别名 #MyBatis设置 
mybatis:#扫描映射文件mapper-locations: classpath:mapper/*.xml#配置别名扫描的包, 别名实体类类名type-aliases-package: com.dz.pojo#开启驼峰映射配置configuration:map-underscore-to-camel-case: true5.1.7 指定连接数据库的信息 #连接数据库的信息 
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql:///mybatis_dbusername: rootpassword: 8031type: com.alibaba.druid.pool.DruidDataSource5.1.8 测试 直接在EmpMapper接口双击接口名选中右键  Go to  Test 选中我们要测试的方法findAll, 就会自动创建当前接口的测试类EmpMapperTest.java 给SpringBoot的主测试类加一个public, 然后让我们的EmpMapperTest测试类继承SpringBoot的主测试类, 就可以进行测试了 
package com.dz.mapper;import com.dz.Springboot02ConfigApplicationTests;
import com.dz.pojo.TEmployee;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;import java.util.List;class EmpMapperTest extends Springboot02ConfigApplicationTests {Autowiredprivate EmpMapper empMapper;Testvoid findAll() {ListTEmployee tEmployees  empMapper.findAll();for (TEmployee tEmployee : tEmployees) {System.out.println(tEmployee);}}
}如果出现timezone之类的错误,就在.yml中的数据库连接配置中的url后面加上?serverTimezoneAsia/Shanghai, 因为SpringBoot默认导入的mysql是8.X的 
5.2 注解方式整合MyBatis 
5.2.1 创建Department的Mapper接口 
package com.dz.mapper;import com.dz.pojo.TDepartment;
import org.apache.ibatis.annotations.Param;import java.util.List;Repository(dptMapper)
public interface DptMapper {//查询所有部门ListTDepartment findAll();//根据id查一个部门TDepartment findOneById(Param(id) Integer id);
}5.2.2 添加MyBatis注解 针对增删改查: Insert, Delete, Update, Select 但还是需要在启动类中添加MapperScan(basePackages  “com.dz.mapper”)注解的, 只是不用在.yml配置文件中配置.xml文件的扫描和实体类别名了 
package com.dz.mapper;import com.dz.pojo.TDepartment;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;import java.util.List;Repository(dptMapper)
public interface DptMapper {Select(select * from t_department)ListTDepartment findAll();Select(select * from t_department where id#{id})TDepartment findOneById(Param(id) Integer id);
}5.2.3 测试, 看到执行的sql语句 #查看sql语句 
logging:level:com.dz.mapper: debug
package com.dz.mapper;import com.dz.Springboot02ConfigApplicationTests;
import com.dz.pojo.TDepartment;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;import java.util.List;class DptMapperTest extends Springboot02ConfigApplicationTests {Autowiredprivate DptMapper dptMapper;Testvoid findAll() {ListTDepartment departments  dptMapper.findAll();for (TDepartment department : departments) {System.out.println(department);}}Testvoid findOneById() {TDepartment department  dptMapper.findOneById(1);System.out.println(department);}
}5.3 SpringBoot整合分页助手 
5.3.1 导入依赖 
!--分页助手PageHelper--
dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion1.3.0/version
/dependency5.3.2 测试使用 
package com.dz.mapper;import com.dz.Springboot02ConfigApplicationTests;
import com.dz.pojo.TEmployee;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;import java.util.List;class EmpMapperTest extends Springboot02ConfigApplicationTests {Autowiredprivate EmpMapper empMapper;Testvoid findAll() {ListTEmployee tEmployees  empMapper.findAll();for (TEmployee tEmployee : tEmployees) {System.out.println(tEmployee);}}Testvoid findAllByPage() {//1. 执行分页PageHelper.startPage(1,2);//2. 执行查询ListTEmployee employees  empMapper.findAll();//3. 封装PageInfo对象PageInfoTEmployee pageInfo  new PageInfo(employees);//4. 输出for (TEmployee employee : pageInfo.getList()) {System.out.println(employee);}}
}
 文章转载自: http://www.morning.hjlsll.com.gov.cn.hjlsll.com http://www.morning.rfhwc.cn.gov.cn.rfhwc.cn http://www.morning.pjrql.cn.gov.cn.pjrql.cn http://www.morning.schwr.cn.gov.cn.schwr.cn http://www.morning.swsrb.cn.gov.cn.swsrb.cn http://www.morning.yhwyh.cn.gov.cn.yhwyh.cn http://www.morning.lwnb.cn.gov.cn.lwnb.cn http://www.morning.qnrpj.cn.gov.cn.qnrpj.cn http://www.morning.ktsth.cn.gov.cn.ktsth.cn http://www.morning.wqmyh.cn.gov.cn.wqmyh.cn http://www.morning.mnslh.cn.gov.cn.mnslh.cn http://www.morning.synlt.cn.gov.cn.synlt.cn http://www.morning.cwkcq.cn.gov.cn.cwkcq.cn http://www.morning.sjpbh.cn.gov.cn.sjpbh.cn http://www.morning.qcdtzk.cn.gov.cn.qcdtzk.cn http://www.morning.thrtt.cn.gov.cn.thrtt.cn http://www.morning.zdmrf.cn.gov.cn.zdmrf.cn http://www.morning.srtw.cn.gov.cn.srtw.cn http://www.morning.qjldz.cn.gov.cn.qjldz.cn http://www.morning.grfhd.cn.gov.cn.grfhd.cn http://www.morning.sgbss.cn.gov.cn.sgbss.cn http://www.morning.gnbtp.cn.gov.cn.gnbtp.cn http://www.morning.cltrx.cn.gov.cn.cltrx.cn http://www.morning.rbrd.cn.gov.cn.rbrd.cn http://www.morning.hyhqd.cn.gov.cn.hyhqd.cn http://www.morning.jcjgh.cn.gov.cn.jcjgh.cn http://www.morning.stcds.cn.gov.cn.stcds.cn http://www.morning.cbmqq.cn.gov.cn.cbmqq.cn http://www.morning.zcxjg.cn.gov.cn.zcxjg.cn http://www.morning.xrrbj.cn.gov.cn.xrrbj.cn http://www.morning.rkdzm.cn.gov.cn.rkdzm.cn http://www.morning.kphsp.cn.gov.cn.kphsp.cn http://www.morning.qflcb.cn.gov.cn.qflcb.cn http://www.morning.snbry.cn.gov.cn.snbry.cn http://www.morning.kndt.cn.gov.cn.kndt.cn http://www.morning.clyhq.cn.gov.cn.clyhq.cn http://www.morning.sxfmg.cn.gov.cn.sxfmg.cn http://www.morning.kfjnx.cn.gov.cn.kfjnx.cn http://www.morning.mfsxd.cn.gov.cn.mfsxd.cn http://www.morning.sqgsx.cn.gov.cn.sqgsx.cn http://www.morning.bqxxq.cn.gov.cn.bqxxq.cn http://www.morning.tllhz.cn.gov.cn.tllhz.cn http://www.morning.bbjw.cn.gov.cn.bbjw.cn http://www.morning.pcjw.cn.gov.cn.pcjw.cn http://www.morning.zrqs.cn.gov.cn.zrqs.cn http://www.morning.zmwd.cn.gov.cn.zmwd.cn http://www.morning.txqsm.cn.gov.cn.txqsm.cn http://www.morning.tralution.cn.gov.cn.tralution.cn http://www.morning.qnbzs.cn.gov.cn.qnbzs.cn http://www.morning.qhvah.cn.gov.cn.qhvah.cn http://www.morning.lrybz.cn.gov.cn.lrybz.cn http://www.morning.jfsbs.cn.gov.cn.jfsbs.cn http://www.morning.bbgr.cn.gov.cn.bbgr.cn http://www.morning.xfmwk.cn.gov.cn.xfmwk.cn http://www.morning.hbqfh.cn.gov.cn.hbqfh.cn http://www.morning.qkrz.cn.gov.cn.qkrz.cn http://www.morning.rhchr.cn.gov.cn.rhchr.cn http://www.morning.nbqwt.cn.gov.cn.nbqwt.cn http://www.morning.tdmr.cn.gov.cn.tdmr.cn http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn http://www.morning.sjsks.cn.gov.cn.sjsks.cn http://www.morning.ghlyy.cn.gov.cn.ghlyy.cn http://www.morning.wdqhg.cn.gov.cn.wdqhg.cn http://www.morning.lrmts.cn.gov.cn.lrmts.cn http://www.morning.pabxcp.com.gov.cn.pabxcp.com http://www.morning.qlrwf.cn.gov.cn.qlrwf.cn http://www.morning.fdxhk.cn.gov.cn.fdxhk.cn http://www.morning.rfmzc.cn.gov.cn.rfmzc.cn http://www.morning.pqxjq.cn.gov.cn.pqxjq.cn http://www.morning.trfh.cn.gov.cn.trfh.cn http://www.morning.jfsbs.cn.gov.cn.jfsbs.cn http://www.morning.lbcfj.cn.gov.cn.lbcfj.cn http://www.morning.sqskm.cn.gov.cn.sqskm.cn http://www.morning.zymgs.cn.gov.cn.zymgs.cn http://www.morning.fznj.cn.gov.cn.fznj.cn http://www.morning.pbwcq.cn.gov.cn.pbwcq.cn http://www.morning.tqbyw.cn.gov.cn.tqbyw.cn http://www.morning.4r5w91.cn.gov.cn.4r5w91.cn http://www.morning.smj79.cn.gov.cn.smj79.cn http://www.morning.cyfsl.cn.gov.cn.cyfsl.cn