IntelliJ IDEA 創建Spring+SpringMVC+mybatis+mybatis項目

来源:https://www.cnblogs.com/gczmn/archive/2018/03/29/8671554.html
-Advertisement-
Play Games

第一步: 創建maven項目 輸入項目名和工程id 選擇maven 預設就可以了 剛開始時間比較長,可以看到,用了有7分多鐘, 還是很快的 maven包下載好後,項目結構如下 第二步: 創建java包 可以看到, 缺少java包,在main上右鍵新建包 建完java後的目錄 第三步:創建層級結構 到 ...


 參考自:https://www.cnblogs.com/hackyo/p/6646051.html

 

第一步: 創建maven項目

   輸入項目名和工程id

   選擇maven

   預設就可以了

  剛開始時間比較長,可以看到,用了有7分多鐘, 還是很快的

  maven包下載好後,項目結構如下

 

第二步: 創建java包

  可以看到, 缺少java包,在main上右鍵新建包

  建完java後的目錄

 

第三步:創建層級結構

  到這裡先不要修改java包的狀態, 接著創建其他目錄結構,這麼做的主要目的是方便創建分級結構。

  當改變java包的狀態後,service.impl會變成一個包的名字,這時候需要Rename以下這個包,先變成service,然後創建PersonService.java, 在創建impl包, 就好了

  如果覺得麻煩可以在創建目錄的時候先不創建impl包

  然後修改java包的狀態,右鍵java包

 

 

第四步:創建需要的文件

  接下來創建一系列的文件, 然後在進行配置,先把骨架搭起來

  以上就是所有用到的文件,現在開始一個一個文件填充, 現在的目的是搭建起來能運次的項目,如果想知道配置原理請自行查閱資料

 

第五步:填充文件

   被標稱黃色的部分是需要註意的, 如果更改了需要做相應的改動, 如果項目目錄跟這個一樣,就不需要改動

PersonController.java
package com.ssm.demo.controller;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.ssm.demo.entity.Person;
import com.ssm.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Controller
@RequestMapping("/person")
public class PersonController {

    @Autowired
    private PersonService personService;
    @RequestMapping("/selectPerson")
    public void selectPerson(HttpServletRequest request, HttpServletResponse response) throws IOException {
request.setCharacterEncoding(
"utf-8"); response.setCharacterEncoding("utf-8");
long personId = Long.parseLong(request.getParameter("id")); Person person =personService.findPersonById(personId);
ObjectMapper mapper
= new ObjectMapper();
response.getWriter().write(mapper.writeValueAsString(person)); response.getWriter().close(); } }
PersonMapperDao.java
package com.ssm.demo.dao;

import com.ssm.demo.entity.Person;
import org.springframework.stereotype.Repository;

@Repository
public interface PersonMapperDao {
    Person findPersonById(long id);
}
Person.java
package com.ssm.demo.entity;

public class Person {
    private long id;
    private String name;
    private String email;
    private int status;

   //getter  setter
@Override public String toString(){ return this.getId()+"---"+this.getName()+"---"+ this.getEmail()+"---"+this.getStatus(); } }
PersonService.java
package com.ssm.demo.service;

import com.ssm.demo.entity.Person;

public interface PersonService {
     Person findPersonById(long id);
}
PersonServiceImpl.java
package com.ssm.demo.service.impl;

import com.ssm.demo.dao.PersonMapperDao;
import com.ssm.demo.entity.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class PersonServiceImpl implements PersonService {
    @Autowired
    private PersonMapperDao personMapperDao;
    public Person findPersonById(long id) {
        return personMapperDao.findPersonById(id);
    }
}

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <!-- 掃描web相關的bean -->
    <context:component-scan base-package="com.ssm.demo"/>

    <!-- 開啟SpringMVC註解模式 -->
    <mvc:annotation-driven/>

    <!-- 靜態資源預設servlet配置 -->
    <mvc:default-servlet-handler/>

    <!-- 配置jsp 顯示ViewResolver -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".html"/>
    </bean>
</beans>

spring-mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">
    <!-- 掃描service包下所有使用註解的類型 -->
    <context:component-scan base-package="com.ssm.demo"/>

    <!-- 配置資料庫相關參數properties的屬性:${url} -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 資料庫連接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
        <property name="minPoolSize" value="${c3p0.minPoolSize}"/>
        <property name="autoCommitOnClose" value="${c3p0.autoCommitOnClose}"/>
        <property name="checkoutTimeout" value="${c3p0.checkoutTimeout}"/>
        <property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}"/>
    </bean>

    <!-- 配置SqlSessionFactory對象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 註入資料庫連接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 掃描model包 使用別名 -->
        <property name="typeAliasesPackage" value="com.ssm.demo.entity"/>
        <!-- 掃描sql配置文件:mapper需要的xml文件 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>

    <!-- 配置掃描Dao介面包,動態實現Dao介面,註入到spring容器中 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 註入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!-- 給出需要掃描Dao介面包 -->
        <property name="basePackage" value="com.ssm.demo.dao"/>
    </bean>

    <!-- 配置事務管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 註入資料庫連接池 -->
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 配置基於註解的聲明式事務 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

</beans>
PersonMapper.xml
<?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">

<!-- 設置為IUserDao介面方法提供sql語句配置 -->
<mapper namespace="com.ssm.demo.dao.PersonMapperDao">

    <select id="findPersonById" resultType="Person" parameterType="long">
        SELECT * FROM person WHERE id = #{id}
    </select>

</mapper>

 jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
#資料庫地址
jdbc.url=jdbc:mysql://localhost:3306/資料庫名?useUnicode=true&characterEncoding=utf8
#用戶名
jdbc.username=資料庫賬號
#密碼
jdbc.password=資料庫密碼
#最大連接數
c3p0.maxPoolSize=30
#最小連接數
c3p0.minPoolSize=10
#關閉連接後不自動commit
c3p0.autoCommitOnClose=false
#獲取連接超時時間
c3p0.checkoutTimeout=10000
#當獲取連接失敗重試次數
c3p0.acquireRetryAttempts=2

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

  <display-name>Archetype Created Web Application</display-name>


  <!-- 編碼過濾器 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- 配置DispatcherServlet -->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 配置springMVC需要載入的配置文件-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:/config/spring/spring-*.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <!-- 匹配所有請求,此處也可以配置成 *.do 形式 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

</web-app>

  index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<script>
    function selectUser() {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("test").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("POST", "person/selectPerson", true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send("id=1");
    }
</script>
<body>
<p id="test">Hello World!</p>
<button type="button" onclick="selectUser()">onclick test</button>
</body>
</html>

 

第六步: 配置tomcat

   先clean一下, 然後package一下

  打包成功後,控制台顯示

   會多一個包,和一個war文件

  配置tomcat

 

  選擇deployment, 點擊右邊加號

     輸入請求的跟地址, 項目名

 
還有一種是點擊右邊加號,可以添加artifact的, 沒弄明白怎麼整的, 求鏈接.

第七步: 資料庫創建, 表的建立, 插入數據

navicat 圖形化界面創建資料庫,然後修改jdbc.properties文件的資料庫名稱為自己創建的資料庫,然後創建表

CREATE
TABLE person ( id int(11) NOT NULL AUTO_INCREMENT, email varchar(255) NOT NULL, name varchar(255) NOT NULL, status int(1) NOT NULL, PRIMARY KEY (id), UNIQUE KEY email (email) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO person VALUES ('1', '123456qq.com', 'zzz', '0'); SET FOREIGN_KEY_CHECKS=1;

  

 

第八步: 啟動tomcat, 彈出頁面點擊按鈕, 會出現查詢內容

 

以上是idea創建maven管理的ssm項目搭建, 本文作為學習經驗,方便以後查看, 如有錯誤請指出,萬望包含

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 轉載請註明:http://www.cnblogs.com/igoslly/p/8672467.html 來看一下題目: You are given two non-empty linked lists representing two non-negative integers. The digit ...
  • 實現QQ新帳戶申請和老帳戶登陸的簡化版功能。最大挑戰是:據說現在的QQ號碼已經有10位數了。 輸入格式: 輸入首先給出一個正整數N(≤10^5),隨後給出N行指令。每行指令的格式為:“命令符(空格)QQ號碼(空格)密碼”。其中命令符為“N”(代表New)時表示要新申請一個QQ號,後面是新帳戶的號碼和 ...
  • 1,判斷值在元組中 2,修改元組中的值,由於元組不能被直接修改,可以先把他轉成列表,在通過列表修改之後,賦給一個新的元組對象 3,向集合添加一個值,刪除一個值,求交集和並集 4,用字典實現一個學生成績小系統,之後進行添加,修改,刪除,排序等操作 ...
  • 2-1 簡單消息:將一條消息存儲到變數中,再將其列印出來。 輸出: 2-2 多條簡單消息:將一條消息存儲到變數中,將其列印出來;再將變數的值修改為一條新消息,並將其列印出來。 輸出: 2-3 個性化消息:將用戶的姓名存到一個變數中,並向該用戶顯示一條消息。顯示的消息應非常簡單,如"Hello Eri ...
  • 1.ToUpper() // 將字元串轉換成大寫 2.ToLower() //將字元串轉換成小寫 3.Equals() // 比較字元串是否相等,相等返回true,不想等返回false eg : string s1 = "233", s2 = "332"; s1.Equals(s2); 4.Spli ...
  • 對象與引用 先看這個例子: 這是輸出a數組的值會如下所示: 5,45,5 這是因為a和b指向的是同一個對象{5,5,5},a和b都被稱為是該對象的引用,也就是說a和b操作的是同一個對象 空對象 將a置為null,也就是意味著a將不會指向任何對象 由此也就會常因此出現 空指針錯誤 NullPointe ...
  • 集合(一) 一、集合的簡單認識 1.侃一侃 集合,說白了就是存放數據的,還記得OOP當中,我們曾說過,OOP將數據放在第一位,然後再考慮操作數據的演算法。也就是研究數據的存儲方式,或者說是數據結構,咱先不談數據結構那些東西。集合用來存放數據,會有不同的存儲數據的方式,如數組,集合。那集合和數組有什麼區 ...
  • 一、項目初衷和爬蟲概述 1.項目初衷 本人的大學畢設就是linux上用c寫的一個爬蟲,現在我想把它完善起來,讓他像一個企業級別的項目。為了重覆發明輪子來學習輪子的原理,我們不使用第三方框架(這裡是說的是指通常的linux系統編程教材以外的庫和介面-0-,當初我也是在虛擬機上跑的ubuntu+putt ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...