目录
一、搭建项目
1、启动工具
① 设置工作空间地址:如:I:\intelliJ_idea\workspace\SpringBoot
② 启动开发工具,选择要存放的文件地址,再确认即可
③ 配置好maven地址:进入File -> Settings,再搜索maven
2、新建项目
① 进入:File -> Project Structure - > Modules
② 发现进入这个路径下时,系统自动把SpringBoot当成项目,所以我们要先删除它(让它成为目录),右键点删除 或者 选中项目,再点击“-”符号删除。
③ 删除后,可以添加自己要建的项目(点击“+”可增加),如下图所示,选择Spring Initializr(因为网络原因有时候不能初始化) 或者 Maven;【本次使用Maven】,点击“下一步”
④ 如下图所示,groupId一般分为多个段,这里只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。点击“下一步”
举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。
GroupId:org.springboot
ArtigactId:springboot01
注:groupId一般分为多个段,这里只说两段,第一段为域,第二段为公司名称。(第三段可以是项目名,ArtigactId作为项目的块,如dubbo-admin项目,有dubbo-admin-ui、dubbo-admin-server等等)
域又分为org非营利组织、com商业组织、cn等;如apache公司的tomcat项目,它的groupId是org.apache(域是org因为tomcat是非营利项目)
artigactId是tomcat,一般artigactId是我们建立的项目名称,如项目名springboot01,则artigactId就是springboot01。
⑤ 如下图所示,项目命名为:springboot01,点击“完成(FINISH)”
⑥ 如下图所示因为使用的是JDK1.8,所以在“Sources”目录下,选中【8 - Lambdas, type annotations etc.】(不然会报:java:无效的源发行版:12),最后点击“OK”
3、调试项目
① 新增项目包路径,要与groupId和artifactId一致
② 在org.springboot.springboot01包名下,新增启动类:Springboot01Application
③ 配置pom.xml
<!-- spring-boot的父类,必须要的 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath />
</parent>
<!-- 属性配置,默认JDK1.8,编码格式UTF-8 -->
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!-- 依赖包 -->
<dependencies>
<!-- 核心Spring Boot starter,包括自动配置支持,日志和YAML -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 启动控制,web项目必须引入的 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Spring注解配置类,如有配置时,不加它会报:spring boot configuration annotation processor not found in classpath -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- fastjson:反序列化远程代码执行漏洞1.2.69之前版本(用于处理数据) -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
<!-- 测试包,可以不用引入 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 开发工具:实现热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<!-- springboot maven运行编译环境 -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin </artifactId>
</plugin>
</plugins>
</build>
④ 在启动类Springboot01Application上,加上注解@SpringBootApplication
@SpringBootApplication
public class Springboot01Application {
// 这个主方法是启动项目的入口
public static void main(String[] args) {
SpringApplication.run(Springboot01Application.class, args);
}
}
⑤ 在org.springboot.springboot01包名下,增加包controller,并在此包下增加类:TestController
/**
* @RestController 是@Controller+@ResponseBody两个注解的结合,返回json数据,不能返回jsp、html页面
*/
@RestController
public class TestController {
// @RequestMapping 注解是访问路径,此方法访问:http://127.0.0.1:8080/
@RequestMapping("/")
public String hello() {
return "Hello Spring Boot!";
}
}
⑥ 启动项目,默认访问路径是:http://127.0.0.1:8080/
二、SpringBoot基础配置
注:① 在src/main/resource路径下,添加:application.properties 或 application.yml,本次使用的是application.properties。
② 在项目启动的时候,application.properties就会被自动加载进去
③ 在src/main/resource路径下,添加:banner.txt,可以改变默认启动图案,配置Banner.Mode.OFF可以不启动图案
@SpringBootApplication
public class Springboot01Application {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(Springboot01Application.class);
app.setBannerMode(Banner.Mode.OFF); // 不打印图案
app.run(args);
}
}
1、application.properties配置
# 环境配置(可配置成多个环境),对应文件application-dev.properties
spring.profiles.active=dev
# 端口号,默认8080
server.port=8080
# 访问的时候,增加的访问路径,即:http://127.0.0.1:8080/springboot
server.servlet.context-path=/springboot
2、自动配置类
① 在src/main/resource路径下,添加blog.properties文件
如果配置文件内容中含中文,推荐使用yml,因为yml使用YamlPropertySourceLoader加载器进行加载,该加载器默认就是使用UTF-8编码的,中文不会出任何问题。properties的文件会出现乱码,需要转成ascii码
blog.name=jutstdoit
blog.title=SpringBoot
blog.author=li
blog.desc=${blog.name} is ${blog.author}
② 在org.springboot.springboot01.properties包下(无包就创建),新增BlogConfigure类,用于加载blog.properties的配置
/**
* 注解@PropertySource (value = {"classpath:blog.properties"}) 指明加载类路径下的哪个配置文件来注入值
* 注解@ConfigurationProperties(prefix = "blog") 指定前缀为blog的会被加载
*/
@SpringBootConfiguration
@PropertySource(value = {"classpath:blog.properties"})
@ConfigurationProperties(prefix = "blog")
public class BlogConfigure {
private String name;
private String title;
private String author;
private String desc;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
③ 在TestController类中,增加下列代码,启动后-再通过http://127.0.0.1:8080/springboot/blog 访问
@Resource
private BlogConfigure blogConfigure;
@RequestMapping("/blog")
public String blogShow() {
return blogConfigure.getDesc();
}
3、注解类说明
① @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按byName自动注入。
@Resource默认按byName自动注入:当只有一个类名时,byName不需要精确,当有多个类继承接口时,byName需要精确。
② 一般@Autowired和@Qualifier一起用,@Resource单独用。如果没有冲突的话@Autowired也可以单独用(冲突情况,一个接口被多个类实现,如userService,实现类userServiceImpl1、userServiceImpl2、userServiceImpl3)
解决方式:@Autowired @Qualifier("userServiceImpl1") @Resource("userServiceImpl1")
三、自动生成实体类及Mapper信息
1、引入mybatis的包
<!-- MyBatis依赖:持久层框架,简化了持久层的开发 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
2、配置自动生成程序
在src/main/resource路径下,新增文件夹:generator;并在文件夹下,新增生成配置:generatorConfig.xml,内容如下所示
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<!-- 0、数据库的JDBC驱动的jar包地址 -->
<!-- oracle 驱动jar包
<classPathEntry location="${user.home}/.m2/repository/com/oracle/ojdbc6/11.2.0.1.0/ojdbc6-11.2.0.1.0.jar" />
-->
<!-- MySql驱动jar包 -->
<classPathEntry location="C:/Users/Think/.m2/repository/mysql/mysql-connector-java/5.1.25/mysql-connector-java-5.1.25.jar" />
<context id="context1" targetRuntime="MyBatis3" defaultModelType="flat">
<!-- 1、是否去除自动生成的注释,true表示是 -->
<commentGenerator>
<property name="suppressDate" value="true"></property>
<property name="suppressAllComments" value="true"></property>
</commentGenerator>
<!-- 2、MySql连接数据库 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/database"
userId="root"
password="111111" />
<!-- 3、专门用来处理 JDBC DECIMAL、NUMERIC类型的策略
false:类型解析为Integer,默认方式;true: 类型解析为java.math.BigDecimal
-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 4、生成Model实体类存放位置-->
<javaModelGenerator targetPackage="org.springboot.springboot01.bean" targetProject="I:\intelliJ_idea\workspace\SpringBoot\springboot01\src\main\java">
<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
<!-- <property name="enableSubPackages" value="true" /> -->
<!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
<!-- <property name="trimStrings" value="true" /> -->
</javaModelGenerator>
<!-- 5、生成映射文件xml存放位置-->
<sqlMapGenerator targetPackage="org.springboot.springboot01.mapper" targetProject="I:\intelliJ_idea\workspace\SpringBoot\springboot01\src\main\java">
<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
<!-- <property name="enableSubPackages" value="true"/> -->
</sqlMapGenerator>
<!-- 6、生成Dao接口类存放位置:如果没有配置该元素,那么默认不会生成Mapper的Dao接口
type:选择怎么生成mapper接口:
1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation(注释)的方式创建(SQL生成在annotation中),不会生成对应的XML;
2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中;
3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;
注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER
-->
<javaClientGenerator targetPackage="org.springboot.springboot01.dao" targetProject="I:\intelliJ_idea\workspace\SpringBoot\springboot01\src\main\java" type="XMLMAPPER">
<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
<!-- <property name="enableSubPackages" value="true" /> -->
</javaClientGenerator>
<!-- 7、生成对应表及类名 -->
<!--
必要:
1,tableName:要生成对象的表名
可选:
1,schema:数据库的schema;
2,catalog:数据库的catalog;
3,alias:为数据表设置的别名,如果设置了alias,那么生成的所有的SELECT SQL语句中,列名会变成:alias_actualColumnName
4,domainObjectName:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面;
5,enableInsert(默认true):指定是否生成insert语句;
6,enableSelectByPrimaryKey(默认true):指定是否生成按照主键查询对象的语句(就是getById或get);
7,enableSelectByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询语句;
8,enableUpdateByPrimaryKey(默认true):指定是否生成按照主键修改对象的语句(即update);
9,enableDeleteByPrimaryKey(默认true):指定是否生成按照主键删除对象的语句(即delete);
10,enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否生成动态删除语句;
11,enableCountByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询);
12,enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性);
13,modelType:参考context元素的defaultModelType,相当于覆盖;
14,delimitIdentifiers:参考tableName的解释,注意,默认的delimitIdentifiers是双引号,如果类似MYSQL这样的数据库,使用的是`(反引号,那么还需要设置context的beginningDelimiter和endingDelimiter属性)
15,delimitAllColumns:设置是否所有生成的SQL中的列名都使用标识符引起来。默认为false,delimitIdentifiers参考context的属性
-->
<table tableName="sys_log" />
</context>
</generatorConfiguration>
3、配置执行程序
步骤1:点击配置edit Configurations
步骤2:点击【+】按钮,再选择Maven
步骤3:更改名称、选择项目路径、输入执行命令
更改名称:generator
项目路径:I:/intelliJ_idea/workspace/SpringBoot/springboot01
执行命令:mybatis-generator:generate -e
步骤4:在pom.xml中,增加插件
<build>
<!-- springboot maven运行编译环境 -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin </artifactId>
</plugin>
<!-- mybatis generator 自动生成代码插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
</build>
步骤5:点击此按钮,就会生成generatorConfig.xml配置的表