1.概要
ただ最近学習。これはmysq +休止+ TomcatのデモでWebプロジェクトの簡単な例で使用スプリングブーツなので、これに基づいて、自分のプロジェクトに展開するのは簡単です。
最初の春のデモを作成します。2.
著者は、春Initalizerを選択し、新しいプロジェクトを作成し、IDEがIDEAで使用。
上記の必要性の作者がサーバーにデプロイされるよう次のステップは、その後、戦争を選択します。必要な場合、あなたはjarファイルを選択することができないようにしてください。
春のWeb +春データJPA + MySQLの選択ドライバを。
最初の実行構成は、もうしばらくお待ちください少し時間がかかる依存しているなら、あなたは、完了することができます。
コンフィギュレーション・データ・ソース
コンフィギュレーションデータソースは、2つの部分に分割されるテーブルを構築するためにユーザを使用して構築され、他の部分はapplication.propertiesに配置されています。
(1)データベースの構築
create database test;
Hibernateは自動的にエンティティクラスと同じ名前のテーブルを作成するため、テーブルを作成しないでください。
(2)ビルドユーザー
create user 'db'@'%' identified by 'xxxxx';
(3)ユーザ認可
grant all on test.* to 'db'@'%';
休止状態の後ろにビルドテーブル機関に使用されるためだけ変更して再検索への追加や削除を許可していない、すべての権限を与えていることをお勧めします。
(4)が配置application.properties
設定の4つのプロパティ:
spring.jpa.hibernate.ddl-auto=
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
最初のプロパティの値です
- なし
- 更新
- 作ります
- 作成ドロップを
a.none
どれも、データベースの構造を変更することはありませんMySQLのデフォルトではありません。
b.update
Hibernateは与えられたエンティティクラスに応じてデータベースを変更します。
c.create
データベースを作成し、それを閉じたときに削除されません。
d.createドロップ
SessionFactoryのが閉じているときにデータベースを削除し、データベースを作成します。これは、H2および他の組み込みデータベースのデフォルトのオプションです。
最初の実行は、更新に設定または作成、エンティティのタイプを正確に知っていないので、最初の実行後、更新またはnoneに設定することができますする必要があります。
のUrlそれはMySQLのであれば
jdbc:mysql://ip:3306/database
剩下的两个为用户名与密码.
以下是作者的配置,供参考:
4.创建实体类
这里创建一个简单的User实体类,需要用到javax中的Entity,Id,GeneratedValue与GenerationType注解.
Entity用于标识实体类,Id用于标识主键,GeneratedValue与GenerationType用于配置主键.
package com.test;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
除了主键之外,可以加上自己想要的属性,还有setter与getter,Hibernate会自动将实体类制作成一个数据表.
5.创建Repository
创建仓库保存用户记录.需要继承CrudRepository<T,ID>,第一个类型为实体类,第二个类型为主键类型.
package com.test;
import org.springframework.data.repository.CrudRepository;
public interface UserRepository extends CrudRepository<User,Integer>
{
}
6.创建控制器
控制器用于控制Http请求,在控制器中可以配置不同的路径实现不同的操作.
package com.test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping(path = "/demo")
public class MainController {
@Autowired
private UserRepository userRepository;
@PostMapping(path = "/add")
public @ResponseBody String addNewUser(@RequestParam String name)
{
User user = new User();
user.setName(name);
userRepository.save(user);
return "Saved.";
}
@GetMapping(path = "/all")
public @ResponseBody Iterable<User> getAllUsers()
{
return userRepository.findAll();
}
}
@RequestMapping中的值表示url以此值开头.
@PostMapping是仅处理post请求的路径.
@ResponseBody表示返回的类型.
@RequestParam表示一个从get或post中获取的参数.
getAllUsers()会返回一个json或者xml.
7.IDE上测试
首先输入
localhost:8080/demo/all
由于作者先前已经有一行数据所以有显示.
否则的话应该显示为[]
接下来可以添加数据:
curl localhost:8080/demo/add -d name=123
回应:
接下来可以选择再次查看:
在看看数据库:
8.打包发布
ビルド- >ビルドアーティファクト。
ビルドをすることができます。
そして、プロジェクトのターゲットディレクトリにあるテスト-0.0.1-XXX warファイルがあるでしょう、これは。ある
Tomcatのwebappsに/下に名前を変更し、このように変更著者としてdemo.war:
あなたは、パスに注意し、訪問を行くことができ、ここでのパスは、パスプラス@RequestMappingプラス@PostMappingでの戦争や@GetMappingパスのパスです:
完全な!