1. 程式人生 > >SpringBoot和Hibernate整合

SpringBoot和Hibernate整合

1.先使用idea建立maven專案(這個就不詳細講了,很簡單的操作)

2.建立完maven專案之後新增springboot依賴,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> <groupId>cn.tongdun.gwl</groupId> <artifactId>SpringBootTest</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5
.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!--springboot依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true
</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> </dependencies> <build> <finalName>hibernateSpringDemo</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build> </project>
複製程式碼

pom檔案編寫完畢,配置maven路徑,並匯入依賴.

3.接下來寫一個SpringBoot入門程式

(1)新建類MyTest.java

複製程式碼
 1 package cn.huawei.gwl;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 import org.springframework.context.annotation.ComponentScan;
 6 
 7 @SpringBootApplication
 8 @ComponentScan(basePackages = "cn")
 9 public class MyTest {
10 
11     public static void main(String[] args) {
12         SpringApplication.run(MyTest.class, args);
13     }
14 }
複製程式碼

需要注意的是:這個類的上面需要新增SpringBoot的註解@SpringBootApplication,然後在主函式中開始啟動.

(2)然後建立一個HelloContreller類,用來測試SpringBoot

複製程式碼
 1 package cn.huawei.gwl;
 2 
 3 import org.springframework.web.bind.annotation.PathVariable;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 import org.springframework.web.bind.annotation.RestController;
 6 
 7 
 8 @RestController
 9 public class HelloController {
10 
11     @RequestMapping("/say")
12     String home() {
13         System.out.println("get into");
14         return "hello world";
15     }
16 
17     @RequestMapping("/hello/{name}")
18     String hello(@PathVariable String name) {
19         return "hello" + name;
20     }
21 }
複製程式碼

需要注意的是這上面的幾個註解:

  • @RestController:表示這是個控制器,和Controller類似
  • @EnableAutoConfiguration:springboot沒有xml配置檔案因為這個註解幫助我們幹了這些事情,有了這個註解springboot啟動的時候回自動猜測你的配置檔案從而部署你的web伺服器
  • @RequestMapping(“/say”):這個和SpringMvc中的類似了。
  • @PathVariable:引數

  SpringBoot程式驗證完畢.

5.接下來再pom.xml檔案裡面新增要使用的jpa依賴:

複製程式碼
1         <dependency>
2             <groupId>org.springframework.boot</groupId>
3             <artifactId>spring-boot-starter-data-jpa</artifactId>
4         </dependency>
5         <dependency>
6             <groupId>mysql</groupId>
7             <artifactId>mysql-connector-java</artifactId>
8         </dependency>
複製程式碼

並匯入依賴

6.新增依賴之後需要配置一些連線MySQL所需要的配置,建立一個application.properties:

複製程式碼
 1 spring.datasource.url = jdbc:mysql://localhost:3306/test
 2 spring.datasource.username = root
 3 spring.datasource.password = abcd1234
 4 spring.datasource.driverClassName = com.mysql.jdbc.Driver
 5 # Specify the DBMS
 6 spring.jpa.database = MYSQL
 7 # Show or not log for each sql query
 8 spring.jpa.show-sql = true
 9 # Hibernate ddl auto (create, create-drop, update)
10 spring.jpa.hibernate.ddl-auto = update
11 # Naming strategy
12 spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
13 # stripped before adding them to the entity manager
14 spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
複製程式碼

7.為main方法添加註解@EnableJpaRepositories

複製程式碼
 1 package cn.tongdun.gwl;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 import org.springframework.context.annotation.ComponentScan;
 6 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 7 
 8 
 9 @SpringBootApplication
10 @EnableJpaRepositories
11 @ComponentScan(basePackages = "cn")
12 public class MyTest {
13 
14     public static void main(String[] args) {
15         SpringApplication.run(MyTest.class, args);
16     }
17 }
複製程式碼

8.接下來建立dao層,不過在這裡是repository包,例如建立一個User實體,然後再建立一個UserRepository:

複製程式碼
 1 import org.springframework.data.jpa.repository.Query;
 2 import org.springframework.data.repository.CrudRepository;
 3 import org.springframework.data.repository.query.Param;
 4 
 5 public interface UserRepository extends CrudRepository<User, Long> {
 6 
 7     public User findOne(Long id);
 8 
 9     public User save(User user);
10 
11     @Query("select t from User t where t.userName=:name")
12     public User findUserByName(@Param("name") String name);
13 
14 }
複製程式碼

這裡面是建立一個UserRepository介面,並不需要建立UserRepository實現,springboot預設會幫你實現,繼承自CrudRepository,@Param代表的是sql語句中的佔位符,例如這裡的@Param(“name”)代表的是:name佔位符。 

9.下面再控制層使用UserRepository,建立一個HibernateController:

複製程式碼
 1 package cn.tongdun.gwl;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 5 import org.springframework.stereotype.Controller;
 6 import org.springframework.web.bind.annotation.RequestMapping;
 7 import org.springframework.web.bind.annotation.ResponseBody;
 8 
 9 import java.util.Date;
10 
11 @Controller
12 @RequestMapping("/hibernate")
13 @EnableAutoConfiguration
14 public class HibernateController {
15 
16     @Autowired
17     private UserRepository userRepository;
18 
19     @RequestMapping("getUserById")
20     @ResponseBody
21     public User getUserById(Long id) {
22         User u = userRepository.findOne(id);
23         System.out.println("userRepository: " + userRepository);
24         System.out.println("id: " + id);
25         return u;
26     }
27 
28     @RequestMapping("saveUser")
29     @ResponseBody
30     public void saveUser() {
31         User u = new User();
32         u.setUserName("wan");
33         u.setAddress("浙江省杭州市濱江區");
34         u.setBirthDay(new Date());
35         u.setSex("男");
36         userRepository.save(u);
37     }
38 }
複製程式碼

@Autowired代表按照型別注入,@Resource按照名稱注入 

至此,程式碼已經編寫完畢,下面進入測試

相關推薦

SpringBootHibernate整合

1.先使用idea建立maven專案(這個就不詳細講了,很簡單的操作) 2.建立完maven專案之後新增springboot依賴,pom.xml檔案如下: <?xml version="1.0" encoding="UTF-8"?> <projec

springbootquartz整合實現動態定時任務(持久化單節點)

依賴 1.5 ostc read 自動 1.8 自動註入 etc string   Quartz是一個完全由java編寫的開源作業調度框架,為在Java應用程序中進行作業調度提供了簡單卻強大的機制,它支持定時任務持久化到數據庫,從而避免了重啟服務器時任務丟失,支持分布式多節

springbootmybatis整合(單多表)

1、MyBatis介紹 MyBatis 本是apache的一個開源專案iBatis, 2010年這個專案由apache software foundation 遷移到了google code,並且改名為MyBatis,實質上Mybatis對ibatis進行一些改進。 MyBatis是一個優秀的持

struts2hibernate整合的時候報錯的原因

type Exception report message Method "retrieveAll" failed for object [email protected] description The server encountered an i

springbootmybatis整合

專案結構 pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifac

SpringBootMybatis整合二(基於配置檔案)

專案結構: EmployeeMapper: package com.lucifer.springboot.mapper; import com.lucifer.springboot.bea

SpringHibernate整合xml配置

1、基於xml的配置 dbconfig.properties資料來源檔案配置 driverClass=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql://localhost:3306/databaseName user=root pass

SpringBootswagger2整合

SpringBoot和swagger2整合學習記錄 一.引入swagger2相關依賴 <dependency> <groupId>io.springfox</groupId> <a

04 )SpringBoot MyBatis 整合

1 所需的jar包   mysql驅動包:mysql-connector-java   資料庫連結池:druid   mybatis對應jar包:mybatis-spring-boot-starter   分頁查詢對應jar包:pagehelper <

springbootkafka整合過程中出現的一個錯誤

java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration.kafkaProducerListener   

springbootquartz整合分散式多節點

  雖然單個Quartz例項能給予我們很好的任務job排程能力,但它不能滿足典型的企業需求,如可伸縮性、高可靠性滿足。假如你需要故障轉移的能力並能執行日益增多的 Job,Quartz叢集勢必成為你應用的一部分了。使用 Quartz 的叢集能力可以更好的支援你的業務需求,並且即使是其中一臺機器在最糟的時間掛掉了

springbootthymeleaf整合過程中遇到的坑!

springboot和thymeleaf整合過程中的各種坑 我覺得你在整合之前考慮好前端和後端和互動怎麼做? 一般兩個方法:一個是前端做前端的 後端做後端API 通過ajax去呼叫 二

SpringBootMybatis整合一(基於註解)

專案結構: pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww

struts,springHibernate整合(註解式)

首先編寫可持久化的實體@Entity @Table(name = "Stock") public class Stock { @Id //標識實體中ID和底層資料表的主鍵統一 @GeneratedValue private int id; //

spring-orm Hibernate整合

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" re

Spring,SpringMVChibernate整合小demo

DeptController @Controller public class DeptController { //植入service @Resource private IDeptService deptService; @Reques

將osworkflow與springhibernate整合的基本介紹

1. 將osworkflow與spring和hibernate結合的原因     1)簡化對osworkflow的配置     2)利用hibernate框架的一些特性,如持久化,快取等     3)事務管理,osworkflow本身是不支援事務的,而事務是作為一個

使用註解方式進行springhibernate整合

整合spring和hibernate需要五個要素,分別包括持久化的類, 資料來源,SessionFactory, TransactionManager和持久化操作的DAO類。 持久化類: @Entitypublicclass Spitter {      private

springhibernate整合使用getCurrentSession方法

spring和hibernate整合使用getCurrentSession()方法獲得session例項時,一定記得在sessionFactory的bean中新增<prop key="hibernate.current_session_context_class"&g

整合Spring框架Hibernate框架

slf4j erl update rep java 監聽 session hiberna .cn -------------------siwuxie095 整合 Spring 框架和 Hibernate 框架