SSH+SpringBoot項目構建


目錄:

SSH+SpringBoot項目構建
一、創建SpringBoot工程
三、編寫Dao層和Service層
1. Dao層

點擊文字跳轉,點擊背景或三角展開

一、創建SpringBoot工程

注意模板的jdk版本,以及resource文件夾是否被標識為資源文件

1. 配置pom.xml,導入Maven,常用如下:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.3</version>
        <relativePath/>
</parent>

<dependencies>
    <!-- SpringBoot整合web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- SpringBoot集成Junit -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <!-- MySQL -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
    <!-- Jpa,Hibernate的導入 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- lombox -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.16</version>
    </dependency>
</dependencies>

2. application.properties常用配置

# http://localhost:8080/sshTest
server.port=8080
server.servlet.context-path=/sshTest

# 設置mysql的四個參數
# 可單獨用個beans.xml文件配置,然后用@ImportResource("classpath:beans.xml")導入
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/takessssss?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root

#hibernate語句打印
#控制台是否打印
spring.jpa.properties.hibernate.show_sql=true
#格式化sql語句
spring.jpa.properties.hibernate.format_sql=true
#指出是什么操作生成了該語句
spring.jpa.properties.hibernate.use_sql_comments=true

3. 創建HelloController進行測試,成功即進行下一步

二、編寫Model

// lombok
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
// Jpa規范,必須標識這是個entity,指向對應table,兩者關聯。
@Entity
@Table(name = "t_user")
public class User {
    // Jpa規范,必須有一個唯一標識標識,此注解標識標識成員屬性id為唯一標識。
    @Id
    // Jpa規范,唯一標識必須有增長策略
    @GeneratedValue(generator = "t_user",strategy = GenerationType.IDENTITY)
    private Integer id;
    private String username;
    private String password;
    // 表的字段與類的成員名字不相同時,用@Column注解可將關系對應上
    // 經測試,成員若是eMail,會自動對應表的e_mail.
    @Column(name = "e_mail")
    private String email;
    
}

上文提到的增長策略,這里詳細說明:

  • AUTO

    可以是identity類型,或者sequence類型或者table類型,取決於不同的底層數據庫.

  • TABLE -

    使用一個特定的數據庫表格來保存主鍵。這種策略的好處就是不依賴於外部環境和數據庫的具體實現,在不同數據庫間可以很容易的進行移植,但由於其不能充分利用數據庫的特性,所以不會優先使用

  • IDENTITY

    主鍵由數據庫自動生成(前提是字段有設置自動增長)

  • SEQUENCE

    在某些數據庫中,不支持主鍵自增長,比如Oracle。該策略一般與另外一個注解一起使用@SequenceGenerator,@SequenceGenerator注解指定了生成主鍵的序列。然后JPA會根據注解內容創建一個序列(或使用一個現有的序列)。如果不指定序列,則會自動生成一個序列SEQ_GEN_SEQUENCE。

三、編寫Dao層和Service層

1. Dao層

實現Dao層的方式有很多種,本文使用無需額外導入依賴的基於Spring Data Jpa的接口,常用的有兩個:

  1. CrudRepository
  2. JpaRepository

二者有繼承關系,用法也基本一樣,本文以父類CrudRepository為例。只需要繼承JpaRepository接口即可,泛型分別是對應的pojo以及它唯一標識的數據類型

@Repository
public interface UserDaoCrud extends CrudRepository<User,Integer> {

}

2. Service層

service層實現具體業務,可調用CrudRepository的內置方法有:

// 保存對象
<S extends T> S save(S var1);

// 將集合中的對象批量保存
<S extends T> Iterable<S> saveAll(Iterable<S> var1);

// 根據id查詢指定對象,Optional
Optional<T> findById(ID var1);

// 是否存在此id
boolean existsById(ID var1);

// 查詢所有
Iterable<T> findAll();

//根據id集合批量查詢
Iterable<T> findAllById(Iterable<ID> var1);

// 查詢此表總條數
long count();

// 根據id刪除指定數據
void deleteById(ID var1);

// 刪除數據(實測也是根據id,不會根據其他條件)
void delete(T var1);

// 根據集合內對象的id,批量刪除數據
void deleteAll(Iterable<? extends T> var1);

// 清空表
void deleteAll();

JpaRepository與其大同小異,不同的有兩點:

  1. JpaRepository有flush等機制,詳情請參考文件Spring Data/Jpa //TODO
  2. JpaRepository中deleteAllInBatch()與繼承父類的deleteAll()deleteInBatch()與繼承父類的deleteAll(Iterable<? extends T> var1)的區別就是,后者是一條一條Sql查出來,然后循環去刪除,前者Batch是一條Sql語句,所以性能更高。

Service例子:

@Service
// 在類上聲明,開啟所有public權限方法的事務處理
@Transactional
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDaoCrud userDaoCrud;

    @Override
    public void save(User entity) {
        userDaoCrud.save(entity);
    }
}

四、Controller編寫

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/toRegister")
    public void register(User user, HttpServletResponse response) throws IOException {
        userService.save(user);
        // 隨便跳個網頁
        response.sendRedirect("http://www.baidu.com");
    }
}

然后輸入網址:http://localhost:8080/sshTest/user/toRegister?username=admin&password=123

結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM