SpringBoot学习之应用开发篇(二)1.1 搭建项目

目录

一、搭建项目

1、启动工具

2、新建项目

3、调试项目

二、SpringBoot基础配置

1、application.properties配置

2、自动配置类

3、注解类说明

三、自动生成实体类及Mapper信息

1、引入mybatis的包

2、配置自动生成程序

3、配置执行程序


一、搭建项目

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配置的表

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的微笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值