Springboot+Jpa

1.配置pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>SpringBootJpa</groupId>
  <artifactId>springBoot-Jpa</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>springBoot-Jpa Maven Webapp</name>
  <url>http://maven.apache.org</url>

   <!-- 继承父包 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.3.RELEASE</version>
        <relativePath></relativePath>
    </parent>

  <dependencies>
  <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>


           <dependency>  
               <groupId>org.springframework.boot</groupId>  
               <artifactId>spring-boot-starter-web</artifactId>  
           </dependency>  

           <dependency>  
               <groupId>org.springframework.boot</groupId>  
               <artifactId>spring-boot-starter-test</artifactId>  
               <scope>test</scope>  
           </dependency>  
           <dependency>  
               <groupId>org.springframework.boot</groupId>  
               <artifactId>spring-boot-starter-data-jpa</artifactId>  
           </dependency>  
           <dependency>  
               <groupId>mysql</groupId>  
               <artifactId>mysql-connector-java</artifactId>  
          </dependency>  

  </dependencies>
  <build>
    <finalName>springBoot-Jpa</finalName>

    <!-- 配置java版本 不配置的话默认父类配置的是1.6-->
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>1.7</source>
            <target>1.7</target>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

2.创建两个实体类
User.java

package com.boot.entity;

import java.io.Serializable;

import javax.persistence.CascadeType;
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.ManyToOne;
import javax.persistence.Table;

@Entity  
@Table(name = "user")  
public class User implements Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id  
    @GeneratedValue(strategy = GenerationType.AUTO)  
    private Integer userId;  

    @Column(name = "id")  
     private Integer id;

    @Column(name = "user_name")  
     private String userName;
    @Column(name = "password") 
     private String password;  

     @Column(name = "nick_name")  
     private String nickName;  

     @Column(name="email")
     private String email;

     @Column(name="did",insertable=false,updatable=false)
     private Integer dId;

     @ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH},
                        fetch=FetchType.EAGER,optional=false)  
     @JoinColumn(name="did",referencedColumnName = "id") 
     private Dept dept;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }


    public User(Integer userId,Integer id, String userName, String password, String nickName,
            String email, Integer dId) {
        super();
        this.userId = userId;
        this.id=id;
        this.userName = userName;
        this.password = password;
        this.nickName = nickName;
        this.email = email;
        this.dId = dId;
    }

    public User() {
        super();
        // TODO Auto-generated constructor stub
    }

    public Integer getdId() {
        return dId;
    }

    public void setdId(Integer dId) {
        this.dId = dId;
    }

    public Dept getDept() {
        return dept;
    }

    public void setDept(Dept dept) {
        this.dept = dept;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
}

Dept.java

package com.boot.entity;

import java.io.Serializable;
import java.util.Set;

import javax.persistence.CascadeType;
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.OneToMany;
import javax.persistence.Table;

@Entity  
@Table(name = "dept") 
public class Dept implements Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id  
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", nullable = false)  
    private Integer id;

    @Column(name="dept_id")
    private Integer deptId;

    @Column(name="dept_name")
    private String dept_name;

    @OneToMany
    (cascade={CascadeType.REFRESH,
               CascadeType.MERGE,
               CascadeType.REMOVE,
               CascadeType.PERSIST},
               fetch=FetchType.LAZY,mappedBy="userId") 
    private Set<User> user;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getDeptId() {
        return deptId;
    }

    public void setDeptId(Integer deptId) {
        this.deptId = deptId;
    }

    public String getDept_name() {
        return dept_name;
    }

    public void setDept_name(String dept_name) {
        this.dept_name = dept_name;
    }

    public Set<User> getUser() {
        return user;
    }

    public void setUser(Set<User> user) {
        this.user = user;
    }


}

3.编写application.properties

spring.datasource.platform=mysql
spring.datasource.url=jdbc:mysql://localhost/workdatabase?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&failOverReadOnly=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driverClassName=com.mysql.jdbc.Driver
# Advanced configuration...
spring.datasource.max-active=50
spring.datasource.max-idle=6
spring.datasource.min-idle=2
spring.datasource.initial-size=6

#create table
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.database: MYSQL

spring.profiles.active=dev 

server.port=8080
server.session-timeout=30
server.tomcat.uri-encoding=UTF-8

#redirect
spring.mvc.view.prefix=/Page/  
spring.mvc.view.suffix=.jsp  
application.message: Hello Phil

5.编写接口IUserService.java

package com.boot.serve;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;

import com.boot.entity.User;

public interface IUserServe extends JpaRepository<User, Integer> {
     /*User findById(Integer id);

     User findByUserName(String userName);

     User findByUserNameAndPassword(String userName, String password); 

     List<User> findByUserNameLike(String username);

     List<User> findByUserNameNotLike(String username);

     List<User> findByUserNameNot(String username);*/ 

     //使用jpa注解来实现对数据库的操作
    // @Query("Select new com.boot.entity.User(u.id,u.userName,u.password,u.nickName,u.email,u.deptId) FROM User u,Dept d WHERE u.deptId = d.deptId and u.deptId = ?1 AND u.password IS NOT NULL")  
    @Query("from User u inner join fetch u.dept as d where d.id=?1") 
    List<User> findByDeptId(Integer deptId);

     @Query("UPDATE User u SET u.password=?2 WHERE u.userName=?1")  
     @Modifying  
     @Transactional  
     void updatePwd(String userName, String pwd);

     @Query("DELETE FROM User u WHERE u.userName=?1")  
     @Modifying  
     @Transactional  
      void deleteByUserName(String userName);

     @Query("UPDATE User u SET u.email= :email WHERE u.userName = :user")  
     @Modifying  
     @Transactional  
     void updateEmail(@Param("user") String userName, @Param("email") String email);  

}

7.编写测试类

package com.boot.test;

import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import com.boot.Application;
import com.boot.entity.User;
import com.boot.serve.IUserServe;

@RunWith(SpringJUnit4ClassRunner.class)  
@SpringApplicationConfiguration(classes = Application.class)  
@WebAppConfiguration 
public class UserTest {
     @Autowired  
     private IUserServe userService; 

    @Test
    public void test1(){
        System.out.println("welcome");
    }

    @Test  
    public void testQuery() {  
        List<User> list = userService.findByDeptId(3);
       /* for(int i =0;i<list.size();i++){
            System.out.println(list.get(i).getUserName()+"\t"+list.get(i).getPassword()+"\t"+list.get(i).getDeptId());
        }*/
        for(User u : list){
            System.out.println(u.getUserName()+"\t"+u.getPassword()+"\t"+u.getNickName()+"\t"+u.getEmail()+"\t");
            switch(u.getUserId()){
            case 1:
                System.out.println("开发部");
                break;
            case 2:
                System.out.println("财务部");
                break;
            case 3:
                System.out.println("测试部");
                break;
                default:
                    System.out.println("商务部");
                    break;
            }
            /*if(u.getdId()==1){
                System.out.println("开发部");
            }else if(u.getdId()==2){
                System.out.println("财务部");
            }else if(u.getdId()==3){
                System.out.println("测试部");
            }else{
                System.out.println("商务部");
            }*/
        }
        }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值