springboot2--crud


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;
	}
}


运行 WebAppConfig.java  启动项目。;根据application.properties 配置的路径进行访问。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值