1. application.yml-->
spring:
profiles:
active: a
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot
username: root
password: 123123
jpa:
hibernate:
ddl-auto: update
show-sql: true
2. application.properties-->
# Database
db.driver: com.mysql.jdbc.Driver
db.url: jdbc:mysql://localhost:3306/springboot
db.username: root
db.password: 123123
# Hibernate
hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql: true
hibernate.hbm2ddl.auto: update
entitymanager.packagesToScan: netgloo
# server.port 在此可以更改访问端口。访问路径为:http://localhost:8888/springboot/hello
server.port=8806
server.context-path=/springboot
3 User.java
package sy.models;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
//1、实体注解 2、对应数据库的哪张表
@Entity
@Table(name = "user")
public class User {
// @Id 注解可将实体Bean中某个属性定义为主键
// @GeneratedValue 表示该表主键生成策略 strategy策略 GenerationType策略类型 IDENTITY自增
// AUTO自动选择 SEQUENCE通过序列 TABLE通过表产生主键
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
// 注解表示该字段是非空的
@NotNull
private String email;
@NotNull
private String name;
public User() {
}
public User(long id) {
this.id = id;
}
public User(String email, String name) {
this.email = email;
this.name = name;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4.UserDao-->
package sy.models;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.Transactional;
import org.springframework.stereotype.Repository;
//1、存储层Bean的注解 2、声明这个类的所有方法需要事务管理
@Repository
@Transactional
public class UserDao {
/**
* 实体管理器,执行持久化操作 添加
*/
public void create(User user) {
entityManager.persist(user);
return;
}
/**
* 实体管理器,执行持久化操作 删除
*/
public void delete(User user) {
if (entityManager.contains(user))
entityManager.remove(user);
else
entityManager.remove(entityManager.merge(user));
return;
}
/**
* 实体管理器,执行持久化操作 查询所有数据
*/
@SuppressWarnings("unchecked")
public List<User> getAll() {
return entityManager.createQuery("from User").getResultList();
}
/**
* 实体管理器,执行持久化操作 根据email查询User对象
*/
public User getByEmail(String email) {
return (User) entityManager
.createQuery("from User where email = :email")
.setParameter("email", email).getSingleResult();
}
/**
* 实体管理器,执行持久化操作 根据ID查询User对象
*/
public User getById(long id) {
return entityManager.find(User.class, id);
}
/**
* 实体管理器,执行持久化操作 修改
*/
public void update(User user) {
entityManager.merge(user);
return;
}
// 注入实体管理器
@PersistenceContext
private EntityManager entityManager;
}
5.UserController-->
package sy.controllers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import sy.models.Product;
import sy.models.User;
import sy.models.UserDao;
import java.util.ArrayList;
import java.util.List;
//表明某类是一个控制器 控制请求
@Controller
public class UserController {
// 1、请求的映射规则 value是规则的值 2、该注解用于读取Request请求的body部分数据
@RequestMapping(value = "/create")
@ResponseBody
public String create(String email, String name) {
try {
User user = new User(email, name);
userDao.create(user);
} catch (Exception ex) {
return "添加用户失败: " + ex.toString();
}
return "添加成功";
}
@RequestMapping(value = "/delete")
@ResponseBody
public String delete(long id) {
try {
User user = new User(id);
userDao.delete(user);
} catch (Exception ex) {
return "删除用户失败: " + ex.toString();
}
return "删除成功";
}
@RequestMapping(value = "/get-by-email")
@ResponseBody
public String getByEmail(String email) {
String userId;
try {
User user = userDao.getByEmail(email);
userId = String.valueOf(user.getId());
} catch (Exception ex) {
return "查询失败: " + ex.toString();
}
return "用户ID: " + userId;
}
@RequestMapping(value = "/update")
@ResponseBody
public String updateName(long id, String email, String name) {
try {
User user = userDao.getById(id);
user.setEmail(email);
user.setName(name);
userDao.update(user);
} catch (Exception ex) {
return "修改失败: " + ex.toString();
}
return "修改成功";
}
// 自动注入
@Autowired
private UserDao userDao;
@RequestMapping(value = "/getAllUsers")
@ResponseBody
public List<User> getByEmail() {
List<User> lists = new ArrayList<User>();
try {
lists = userDao.getAll();
} catch (Exception ex) {
}
for(User p:lists){
System.out.print(p.getName());
}
return lists;
}
}