Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 欧美成人免费sss,亚洲免费在线看,亚洲精品高清中文字幕完整版

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          使用IDEA搭建一個簡單的SpringBoot項目-詳細過程

          近開始學習SpringBoot,和大家分享一下簡單的SpringBoot項目搭建。

          1.File->new->project;

          2.選擇“Spring Initializr”,點擊next;(jdk1.8默認即可)

          3、.完善項目信息,組名可不做修改,項目名可做修改;最終建的項目名為:demo,src->main->java下包名會是:com->springboot_learn->test;點擊next;

          4.Web下勾選Spring Web Start,(網上創建springboot項目多是勾選Web選項,而較高版本的Springboot沒有此選項,勾選Spring Web Start即可,2.1.8版本是Spring Web);SQL勾選:MySQL Driver,JDBC API 和 MyBatis Framework三項;點擊next;

          5.選擇項目路徑,點擊finish;打開新的窗口;

          6.剛創建好的項目目錄結構

          7.點擊右側的Maven,點擊設置(扳手圖標)進行項目Maven倉庫的配置;

          8.(1)選擇本地Maven路徑;(2)勾選配置文件后邊的選項,然后修改為本地Maven的配置文件,它會根據配置文件直接找到本地倉庫位置;

          9.配置完后,如果沒有自動導包,可以點擊左上角重新導包按鈕,或者呢個下載按鈕,選擇下載所有源文件和文檔

          10.在templates文件下新建index.html頁面,作為啟動的初始頁面;

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>hello</title>
          </head>
          <body>
              你好!初學者,我是SpringBoot的簡單啟動頁面!
          </body>
          </html>

          11.在com.springboot_learn.test下新建controller文件夾,在controller文件夾下建一個簡單的helloController類;(Controller類要添加@Controller注解,項目啟動時,SpringBoot會自動掃描加載Controller)

          package com.springboot.demo.controller;
          
          import org.springframework.web.bind.annotation.RequestMapping;
          import org.springframework.web.bind.annotation.RestController;
          
          /**
           * @author 
           * @version 1.0
           * @date 2021/09/07 10:50 上午
           */
          
          /**
           * Web層:就是Controller層,實現與web前端的交互。
           */
          @RestController
          @RequestMapping("/ceshi")
          public class HelloWorldController {
              @RequestMapping("/index")
              public String sayHello(){
                  System.out.println("測試開始");
                  return "index";
              }
          
          }
          

          12.在resources文件夾下application中先配置DataSource基本信息,application文件有兩種文件格式,一種是以.properties為后綴,一種是以.yml為后綴的,兩種配置方式略有差別,。右鍵application文件選擇Refact,選擇Rename,將后綴改為yml;

          spring:
            datasource:
              name: test #數據庫名
              url: jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useSSL=false #url
              username: root  #用戶名
              password: 123456  #密碼
              # 升級后的mysql驅動類,Driver位置由com.mysql.jdbc.Driver 變為com.mysql.cj.jdbc.Driver
              driver-class-name: com.mysql.cj.jdbc.Driver #數據庫鏈接驅動
          
          mybatis:
            mapper-locations: classpath:mapper/*.xml  #配置映射文件
            type-aliases-package: package com.springboot.demo.bean #配置實體類

          13.運行項目啟動類TestApplication.java

          14.在瀏覽器中輸入localhost:8080,回車顯示初始的index界面;到這項目的初步搭建已經完成,下面可以下一些簡單的業務邏輯,比如從數據庫獲取信息,登錄之類的簡單功能;

          15.在進行下一步編寫時,我們先來鏈接一下數據庫;點擊右側的Database,點“加號”,新建數據庫鏈接;

          16.填寫數據庫相關信息,點擊Test Connection;需要在本地先搭建Mysql數據庫,database建立test,創建user表.

          17.連接成功后,顯示數據庫信息,user表的基本信息也顯示了,下面就照這個來了;

          19.SpringBoot項目大概分為四層:

          (1)DAO層:包括XxxMapper.java(數據庫訪問接口類),XxxMapper.xml(數據庫鏈接實現);(這個命名,有人喜歡用Dao命名,有人喜歡用Mapper,看個人習慣了吧)

          (2)Bean層:也叫model層,模型層,entity層,實體層,就是數據庫表的映射實體類,存放POJO對象;

          (3)Service層:也叫服務層,業務層,包括XxxService.java(業務接口類),XxxServiceImpl.java(業務實現類);(可以在service文件夾下新建impl文件放業務實現類,也可以把業務實現類單獨放一個文件夾下,更清晰)

          (4)Web層:就是Controller層,實現與web前端的交互。

          依照上面四層,創建目錄結構如下:

          20.代碼展示:

          (1)在application配置文件中添加MyBatis配置:

          spring:
            datasource:
              name: test #數據庫名
              url: jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useSSL=false #url
              username: root  #用戶名
              password: 1qaz2wsx  #密碼
              # 升級后的mysql驅動類,Driver位置由com.mysql.jdbc.Driver 變為com.mysql.cj.jdbc.Driver
              driver-class-name: com.mysql.cj.jdbc.Driver #數據庫鏈接驅動
          
          mybatis:
            mapper-locations: classpath:mapper/*.xml  #配置映射文件
            type-aliases-package: package com.springboot.demo.bean #配置實體類

          (2)pom.xml文件配置信息

          <?xml version="1.0" encoding="UTF-8"?>
          <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>
              <parent>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-parent</artifactId>
                  <version>2.1.6.RELEASE</version>
                  <relativePath/> <!-- lookup parent from repository -->
              </parent>
              <groupId>com.example</groupId>
              <artifactId>test</artifactId>
              <version>0.0.1-SNAPSHOT</version>
              <name>test</name>
              <description>Demo project for Spring Boot</description>
          
              <properties>
                  <java.version>1.8</java.version>
              </properties>
          
              <dependencies>
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-jdbc</artifactId>
                  </dependency>
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-thymeleaf</artifactId>
                  </dependency>
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-web</artifactId>
                  </dependency>
                  <dependency>
                      <groupId>org.mybatis.spring.boot</groupId>
                      <artifactId>mybatis-spring-boot-starter</artifactId>
                      <version>2.1.0</version>
                  </dependency>
          
                  <dependency>
                      <groupId>mysql</groupId>
                      <artifactId>mysql-connector-java</artifactId>
                      <version>8.0.11</version>
                      <scope>runtime</scope>
                  </dependency>
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-test</artifactId>
                      <scope>test</scope>
                  </dependency>
              </dependencies>
          
              <build>
                  <plugins>
                      <plugin>
                          <groupId>org.springframework.boot</groupId>
                          <artifactId>spring-boot-maven-plugin</artifactId>
                      </plugin>
                  </plugins>
              </build>
          
          </project>
          

          (3)Bean實體類,依據數據庫表,生成set和get方法;

          package com.springboot.demo.bean;
          
          /**
           * @author 
           * @version 1.0
           * @date 2021/09/07 4:27 下午
           */
          /**
           * Bean層:也叫model層,模型層,entity層,實體層,就是數據庫表的映射實體類,存放POJO對象;
           * 依據數據庫表,生成set和get方法;
           */
          public class UserBean {
              private int id;
              private String name;
              private String password;
          
              public int getId() {
                  return id;
              }
          
              public void setId(int id) {
                  this.id = id;
              }
          
              public String getName() {
                  return name;
              }
          
              public void setName(String name) {
                  this.name = name;
              }
          
              public String getPassword() {
                  return password;
              }
          
              public void setPassword(String password) {
                  this.password = password;
              }
          }
          

          (4)DAO層訪問數據庫接口文件:

          package com.springboot.demo.mapper;
          
          import com.springboot.demo.bean.UserBean;
          /**
           * @author 
           * @version 1.0
           * @date 2021/09/07 4:41 下午
           */
          /**
           * DAO層訪問數據庫接口文件
           */
          public interface UserMapper {
          
              UserBean getInfo(String name,String password);
          
          }
          

          5)DAO層訪問數據庫實現文件(需在resource包下創建mapper文件夾,然后再創建一個UserMapper.xml.在application配置文件中mybatis:mapper-locations:對應的就是該文件地址),注意<mapper>標簽的namespace屬性要填寫 訪問數據庫接口類文件路徑:

          <?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="com.springboot.demo.mapper.UserMapper">
          
              <select id="getInfo" parameterType="String" resultType="com.springboot.demo.bean.UserBean">
                  SELECT * FROM user WHERE name = #{name} AND password = #{password}
              </select>
          
          </mapper>

          (6)Service層業務接口類編寫:

          package com.springboot.demo.service;
          import com.springboot.demo.bean.UserBean;
          import org.springframework.stereotype.Repository;
          
          /**
           * @author 
           * @version 1.0
           * @date 2021/09/07 4:29 下午
           */
          
          /**
           * Service層:也叫服務層,業務層,包括XxxService.java(業務接口類),XxxServiceImpl.java(業務實現類);
           * (可以在service文件夾下新建impl文件放業務實現類,也可以把業務實現類單獨放一個文件夾下,更清晰
           */
          
          @Repository
          public interface UserService {
          
              UserBean loginIn(String name,String password);
          
          }
          

          (7)Service層業務實現類編寫,注意要注解@Service,注入DAO:

          package com.springboot.demo.impl;
          import com.springboot.demo.bean.UserBean;
          import com.springboot.demo.mapper.UserMapper;
          import com.springboot.demo.service.UserService;
          
          /**
           * @author 
           * @version 1.0
           * @date 2021/09/07 4:48 下午
           */
          /**
           * Service層業務實現類編寫,注意要注解@Service,注入DAO:
           */
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.stereotype.Service;
          
          @Service
          public class UserServiceImpl implements UserService {
          
              //將DAO注入Service層
              @Autowired
              private UserMapper userMapper;
          
              @Override
              public UserBean loginIn(String name, String password) {
                  return userMapper.getInfo(name,password);
              }
          }
          

          8)項目啟動類要添加注解@MapperScan項目啟動時掃描mapper接口,否則會報錯找不到mapper文件:

          package com.springboot.demo;
          
          import org.mybatis.spring.annotation.MapperScan;
          import org.springframework.boot.SpringApplication;
          import org.springframework.boot.autoconfigure.SpringBootApplication;
          
          @SpringBootApplication
          @MapperScan("com.springboot.demo.mapper")
          
          public class DemoApplication {
              public static void main(String[] args) {
                  SpringApplication.run(DemoApplication.class);
              }
          
          }
          

          (9)編寫測試類,看是否能成功 訪問數據庫,獲取數據庫信息:

          package com.springboot.demo;
          
          
          import com.springboot.demo.bean.UserBean;
          import com.springboot.demo.service.UserService;
          import org.junit.Test;
          import org.junit.runner.RunWith;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.boot.test.context.SpringBootTest;
          import org.springframework.test.context.junit4.SpringRunner;
          
          @RunWith(SpringRunner.class)
          @SpringBootTest
          public class TestApplicationTests {
          
              @Autowired
              UserService userService;
          
              @Test
              public void contextLoads() {
                  UserBean userBean = userService.loginIn("springboot", "123456");
                  System.out.println("該用戶ID為:");
                  System.out.println(userBean.getId());
              }
          }

          (10) controller層,注意添加@controller注解,注入Service服務:

          package com.springboot.demo.controller;
          
          /**
           * @author 
           * @version 1.0
           * @date 2021/09/07 4:58 下午
           */
          
          import com.springboot.demo.bean.UserBean;
          import com.springboot.demo.service.UserService;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.stereotype.Controller;
          import org.springframework.web.bind.annotation.RequestMapping;
          import org.springframework.web.bind.annotation.RequestMethod;
          
          @Controller
          public class LoginController {
          
              //將Service注入Web層
              @Autowired
              UserService userService;
          
              @RequestMapping("/login")
              public String show(){
                  return "login";
              }
          
              @RequestMapping(value = "/loginIn",method = RequestMethod.POST)
              public String login(String name,String password){
                  UserBean userBean = userService.loginIn(name,password);
                  if(userBean!=null){
                      return "success";
                  }else {
                      return "error";
                  }
              }
          }

          (11)html文件:

          login.html

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>login</title>
          </head>
          <body>
              <form role="form" action = "/loginIn" method="post">
                  賬號:<input type="text" id="name" name = "name"> <br>
                  密碼:<input type="password" id = "password" name = "password"> <br>
                  <input type="submit" id = "login" value = "login">
              </form>
           
          </body>
          </html>

          success.html

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>success</title>
          </head>
          <body>
              <h1>登錄成功!</h1>
          </body>
          </html>

          error.html

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>error</title>
          </head>
          <body>
              <h1>登錄失敗!</h1>
          </body>
          </html>

          21.先運行測試類,看是否成功獲取數據庫信息:

          22.運行TestApplication.java文件,啟動項目,無任何WARN警告信息,進入瀏覽器輸入localhost:8080/login




          項目到這里就算完美結束了,對自己說一聲,加油,努力學習。

          分享是人們與社會產生聯系的一種方式,本質上是一種互利行為,在互利中,選擇、鞏固和發展彼此的社會關系。完全沒有分享,社會將不能成立。分享是構成社會的要素之一。

          
          <div id="app">
          	{{msg}}
          </div>
          
          <script src="/js/vue.js"></script>
          <script>
          	const app = new Vue({
          		el:'#app',
          		data:{
          			msg: 'study Vue 2323322'
          		}
          	})
          </script>
          

          html中輸入vue后回車自動生成以上代碼

          步驟:1,找到設置setting中File-->Settings-->Editor-->Live Templates

          新建快捷生成操作名稱


          在vue中新建vue快捷名稱


          使用位置為html中


          完成

          dea插件介紹

          作為一枚程序員,平時最常用的ide就是IntelliJ IDEA。平時會用到各種各樣的插件,通過插件的使用,提高自己的開發效率。

          • idea具有全局性,安裝好插件后,對idea生效,所有的工程均能找到。
          • idea使用的便捷性,在固定的菜單中,或者右鍵即可看到該插件的使用入口
          • 專注度高,展示出來的內容均是自己需要關注的,不需要關注的就不會展示??梢詫W⑺伎甲约阂趺从?。
          • 和系統解耦,插件可以給給開發提效,卻不會去占用項目的空間位置。

          為什么開發idea插件?

          目前已有插件并不能真的完全滿足自己的需求。舉個簡單的例子,比如,最近在用mybatis plus的generator,配置完成之后,運行main方法,就可以生成ORM代碼。新建一個工程,就需要把代碼給拷貝過去,然后再重新配置一下,再生成。

          缺點:

          • 過于繁瑣,每次都需要去把代碼給拷貝過去,然后運行。
          • 冗余,這個代碼對于實際的業務來說,沒有任何意義。
          • 不便捷,代碼只能生成在固定地方,否則就得自己去更改配置。然后自己再重復性的去復制過去。
          • 不便捷,代碼放在固定地方,在比較大的工程結構中,自己需要去找。如果新加入的開發不熟悉,并不知道這個在哪,低效。

          基于以上思考,就需要開發插件來和系統解耦,達到提效的效果。

          開發插件的場景需要準備些什么

          • 首先你需要有一定的開發經驗,新手的話,還是需要先學習語言基礎,idea的使用等。
          • 有需求場景,知道自己接下來要開發的是一個什么東西,圍繞著需求不斷地去完善插件
          • 大致看下idea plugin sdk的開發手冊,對它能干什么有一個大致的了解。
          • 如果要使用gradle開發,需要對gradle有一定的使用能力。

          開發插件流程(最簡單的使用場景)

          新建項目(使用的最新的idea,創建流程稍有不一樣)

          配置gradle

          最新版的插件開發使用的是kts的gradle插件?;居梅ㄊ且粯拥模煌氖菍懛ㄓ猩晕⒁稽c不一樣。

          一些常用的配置

          依賴

          //頂層結構
          dependencies {
              implementation("org.springframework.boot:spring-boot-starter:2.7.0")
          }
          
          // 一般的gradle是 
          compile group: 'org.springframework.boot', name: 'spring-boot-starter', version: '2.7.0'
          

          將依賴打進jar包中(不打進去,插件如果有用到依賴,就會無法使用,找不到類)

          // 頂層結構
          tasks.jar.configure {
              duplicatesStrategy = org.gradle.api.file.DuplicatesStrategy.INCLUDE
              from(configurations.runtimeClasspath.get().filter { it.name.endsWith("jar")}.map { zipTree(it) })
          }
          

          將倉庫改為阿里云倉庫

          // 頂層結構
          repositories {
              mavenLocal()
              maven("https://maven.aliyun.com/nexus/content/repositories/central/")
              mavenCentral()
          }
          

          創建第一個action

          import com.intellij.openapi.actionSystem.AnAction;
          import com.intellij.openapi.actionSystem.AnActionEvent;
          import com.intellij.openapi.project.Project;
          import com.intellij.openapi.ui.Messages;
          
          public class MyAction extends AnAction {
            @Override
              public void actionPerformed(@NotNull AnActionEvent e) {
                  Project project = e.getProject();
                  Messages.showMessageDialog(project, "this is message content", "this message title", Messages.getInformationIcon());
              }
          }
          

          將action配置到plugin中

          src -> main -> resource -> META-INF -> plugin.xml
          
          <idea-plugin>
            <!-- 插件的id,該id是唯一的,插件的坐標是一維的,只有一個id。這點和maven的不太一樣,maven的是二維坐標 -->
           <id>com.geek45.plugin-demo</id>
            <!-- 插件名字-->
            <name>plugin demo</name>
            <!-- 插件的描述,有固定格式,這里可以寫html代碼 -->
            <description><![CDATA[
                  <h1> Demo plugin </h1>
                  測試插件 <br>
                  點擊插件可以彈出一個彈窗
                  <p>
                  plugin demo <br />
                  <b>
                        <a href="https://www.geek45.com">Website</a> |
                        <a href="https://github.com/xiaopangzhi795/plugin-demo">GitHub</a> |
                    </b>
                  </p>
            ]]>
            </description>
            <!-- 這里是插件依賴管理,和gradle的依賴不一回事,可以依賴其他的插件 -->
            <depends>com.intellij.modules.platform</depends>
            <!-- 拓展管理,后續的ui頁面會在這里配置,暫時用不到 -->
            <extensions defaultExtensionNs="com.intellij">
          
            </extensions>
            <!-- action配置,按鈕展示在哪里需要在這配置 -->
            <actions>
             <action class="com.geek45.action.MyAction" id="myAction" text="action" description="this is action demo" >
                <!-- 將插件放在Tools菜單中的first位置。 -->
                <add-to-group group-id="ToolsMenu" anchor="first" />
              </action>
            </actions>
            
          </idea-plugin>
          

          打包

          gradle中,運行jar命令,就可以把插件打成jar包,在項目根目錄中,有build目錄,libs中會有打好的jar包。

          plugin中,選擇本地安裝,然后選擇剛才打好的jar包,就可以把插件安裝到自己的idea中。

          本地運行

          打包安裝太麻煩了,可以選擇本地運行的方式進行調試。

          選擇runIde,就可以本地運行。該命令支持debug運行,debug可以打斷點。

          運行該命令,會啟動一個新的idea,該idea中已經安裝了你開發的插件。在該idea中可以直接使用插件,使用過程中,可以在項目里面斷點跟進。

          新的idea和正常idea操作是一樣的,可以打開一個測試code,來測試你的插件是否正常運行。

          運行效果

          來源:blog.csdn.net/smile_795/article/details/125470136


          主站蜘蛛池模板: 国产成人精品视频一区| 日本v片免费一区二区三区| 日本在线观看一区二区三区| 中文字幕aⅴ人妻一区二区| 亚洲国产AV一区二区三区四区| 中文字幕VA一区二区三区| 国产成人av一区二区三区在线| 亚洲国产AV无码一区二区三区 | 日韩视频一区二区三区| 精品一区二区三区在线播放 | 福利一区二区在线| 无码人妻精品一区二区三区久久久| 少妇激情一区二区三区视频| 国产一区二区三区高清在线观看| 国产在线不卡一区| 国产精品一区二区无线| 99久久精品午夜一区二区| 亚洲一区中文字幕久久| 久久福利一区二区| 日本不卡一区二区三区| 国产一区二区三区免费| 亚洲AV无码一区二区三区系列| 中文字幕无码一区二区免费| av无码人妻一区二区三区牛牛| 国产麻豆精品一区二区三区v视界 国产美女精品一区二区三区 | 亚洲一区二区三区精品视频| 亚洲日本一区二区三区| 国产精品高清一区二区三区| 久久99精品波多结衣一区| 日韩在线不卡免费视频一区| 人妻久久久一区二区三区| 性色A码一区二区三区天美传媒| 亚洲A∨无码一区二区三区| 久久久久人妻一区精品色| 亚洲熟妇AV一区二区三区浪潮| 国产SUV精品一区二区88| 国产精品成人一区二区三区| 日韩精品无码人妻一区二区三区| 亚洲一区二区三区免费| 国产在线精品一区二区中文| 中文字幕一区视频|