User.java
package com.example.entity; import java.io.Serializable; import java.util.Date; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.Table; import org.springframework.format.annotation.DateTimeFormat; import com.fasterxml.jackson.annotation.JsonBackReference; @Entity @Table(name="boot_user") public class User implements Serializable { /** * @Fields serialVersionUID : TODO */ private static final long serialVersionUID = -6550777752269466791L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(length=50,nullable=false) private String name; private String loginName; private String password; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createdate; @ManyToOne @JoinColumn(name = "did") @JsonBackReference private Department department; @ManyToMany(cascade={},fetch = FetchType.EAGER) @JoinTable(name = "user_role", joinColumns={@JoinColumn(name="user_id")}, inverseJoinColumns = {@JoinColumn(name="roles_id")}) private List<Role> roleList; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getCreatedate() { return createdate; } public void setCreatedate(Date createdate) { this.createdate = createdate; } public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public List<Role> getRoleList() { return roleList; } public void setRoleList(List<Role> roleList) { this.roleList = roleList; } public User() { super(); // TODO Auto-generated constructor stub } public User(Long id, String name, String loginName, String password, Date createdate, Department department, List<Role> roleList) { super(); this.id = id; this.name = name; this.loginName = loginName; this.password = password; this.createdate = createdate; this.department = department; this.roleList = roleList; } }
Department.java,Role.java 代码参照User.java代码即可
UserDao.java
package com.example.dao; import java.util.Date; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.example.entity.User; @Repository public interface UserDao extends JpaRepository<User, Long> { User findByLoginNameLike(String name); User readByLoginName(String name); List<User> getByCreatedateLessThan(Date star); }
DepartmentDao.java,RoleDao.java参考UserDao.java 即可,这样就实现了分页、增删改查等功能。很便捷有木有!那为什么呢?看下JpaRepository接口,方法命名规则及相关问题后续重点介绍.
UserController.java
package com.example.controller; import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.Assert; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import com.example.entity.User; import com.example.service.DataService; import com.example.service.UserService; /** * @ClassName: UserController * @Description: User控制器 * @author mengfanzhu * @date 2017年2月20日 下午5:58:19 */ @RestController @RequestMapping("/user") public class UserController { protected static Logger logger=LoggerFactory.getLogger(UserController.class); @Autowired private UserService userService; @Autowired private DataService dataService; @RequestMapping("/demo/{name}") @ResponseBody public String demoShowName(@PathVariable String name){ logger.debug("访问getUserByName,Name={}",name); return "name is " + name; } /** * @Title: UserController * @Description: 数据初始化 * @author mengfanzhu * @throws */ @RequestMapping("/initdata") @ResponseBody public String initData(){ dataService.initData(); return "success"; } /** * @Title: UserController * @Description: 由loginName获取user * @param loginName * @author mengfanzhu * @throws */ @RequestMapping("/getUserByLoginName/{loginName}") @ResponseBody public Map<String,Object> getUserByName(@PathVariable String loginName){ Map<String,Object> result = new HashMap<String, Object>(); User user = userService.readByLoginName(loginName); Assert.notNull(user); result.put("name", user.getName()); result.put("loginName", user.getLoginName()); result.put("departmentName",user.getDepartment().getName()); result.put("roleName", user.getRoleList().get(0).getName()); return result; } }
JpaConfiguration.java
package com.example; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.transaction.annotation.EnableTransactionManagement; /** * @ClassName: JpaConfiguration * @Description: Jpa的配置类。 * @EnableTransactionManagement 启用了JPA 的事务管理 * @EnableJpaRepositories 启用了JPA资源库并指定了上面定义的接口资源库的位置 * @EntityScan 指定了定义实体的位置 * @author mengfanzhu * @date 2017年2月20日 下午7:21:39 */ @Order(Ordered.HIGHEST_PRECEDENCE) @Configuration @EnableTransactionManagement(proxyTargetClass = true) @EnableJpaRepositories(basePackages = "com.example.dao") @EntityScan(basePackages = "com.example.entity") public class JpaConfiguration { @Bean PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){ return new PersistenceExceptionTranslationPostProcessor(); } }
DataServiceImpl.java
扫描二维码关注公众号,回复:
219583 查看本文章
package com.example.service; import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import com.example.dao.DepartmentDao; import com.example.dao.RoleDao; import com.example.dao.UserDao; import com.example.entity.Department; import com.example.entity.Role; import com.example.entity.User; @Service public class DataServiceImpl implements DataService{ @Autowired private UserDao userDao; @Autowired private RoleDao roleDao; @Autowired private DepartmentDao departmentDao; public void initData(){ userDao.deleteAll(); departmentDao.deleteAll(); roleDao.deleteAll(); Department department = new Department(); department.setName("财务部"); department.setCreatedate(new Date()); departmentDao.save(department); Assert.notNull(department.getId(),"部门ID不能为空!"); Role role = new Role(); role.setName("管理员"); role.setCreatedate(new Date()); roleDao.save(role); Assert.notNull(role.getId(),"角色ID不能为空"); User user = new User(); user.setName("管理员"); user.setLoginName("admin"); user.setDepartment(department); List<Role> roleList = roleDao.findAll(); Assert.notNull(roleList,"角色列表不能为空!"); user.setRoleList(roleList); user.setPassword("admin"); userDao.save(user); Assert.notNull(user.getId(),"用户ID不能为空!"); } }
UserServiceImpl.java
package com.example.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example.dao.UserDao; import com.example.entity.User; @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public User readByLoginName(String name) { return userDao.readByLoginName(name); } }
5.运行+SpringBoot热部署
<!-- springboot 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional><!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 --> </dependency>
http://www.cnblogs.com/cnmenglang/p/6420940.html