一个简单的web项目配合MySQL+Hibernate+Tomcat的简单示例demo,很容易在此基础上扩展成本身的项目.java
笔者IDE为IntelliJ IDEA,新建一个工程,选择Spring Initalizer:
下一步的话因为须要部署到服务器上面,选择了war.不须要的话能够选择jar.
选择Spring Web+Spring Data JPA+MySQL Driver.
而后完成便可,首次运行的话配置依赖须要一点时间,请耐心等待.mysql
配置数据源分为两部分,一部分是建表与建用户,另外一部分是在application.properties
中配置的.git
create database test;
注意这里不用建立表了,由于Hibernate从实体类自动建立一个同名的表.
接着建立用户:github
create user 'db'@'%' identified by 'xxxxx';
grant all on test.* to 'db'@'%';
这里建议受权all,由于后面Hibernate会用到建表权限,不能仅仅受权增删查改.web
配置四个属性:spring
spring.jpa.hibernate.ddl-auto= spring.datasource.url= spring.datasource.username= spring.datasource.password=
第一个属性是能够取值sql
第一次运行时必须设置为update或create,由于还不知道确切的实体类,第一次运行后,能够设置为update或none.
url的话对于MySQL来讲是数据库
jdbc:mysql://ip:3306/database
剩下的两个为用户名与密码.
如下是笔者的配置,供参考:tomcat
这里建立一个简单的User实体类,须要用到javax中的@Entity
,@Id
,@GeneratedValue
与@GenerationType
注解.@Entity
用于标识实体类,@Id
用于标识主键,@GeneratedValue
与@GenerationType
用于配置主键.bash
@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会自动将实体类制做成一个数据表.
建立Repository保存用户记录.须要继承CrudRepository<T,ID>
,第一个类型为实体类,第二个类型为主键类型.
public interface UserRepository extends CrudRepository<User,Integer> {}
控制层用于控制HTTP请求,在控制器中能够配置不一样的路径实现不一样的操做.
@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首先输入:
localhost:8080/demo/all
因为先前已经有一行数据因此有显示.
不然的话应该显示为[]
.
接下来能够添加数据:
curl localhost:8080/demo/add -d name=123
回应:
接下来能够选择再次查看:
再看看数据库:
若是以为文章好看,欢迎点赞。
同时欢迎关注微信公众号:氷泠之路。