spring mysql jpa_使用Spring Data JPA操作Mysql

1.添加依赖:

dependencies {

compile('io.springfox:springfox-swagger2:2.2.2')

compile('io.springfox:springfox-swagger-ui:2.2.2')

compile('org.springframework.boot:spring-boot-starter-data-jpa')

compile('org.springframework.boot:spring-boot-starter-jdbc')

compile('org.springframework.boot:spring-boot-starter-web')

runtime('mysql:mysql-connector-java')

providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')

testCompile('org.springframework.boot:spring-boot-starter-test')

}

2. application.properties文件添加链接串

spring.datasource.url=jdbc:mysql://localhost/yfeid

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#update database by model

spring.jpa.show-sql= true

spring.jpa.properties.hibernate.hbm2ddl.auto=update

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

3.添加实体类:User

package com.yunfeng.TestMySQL.Model;

import java.io.Serializable;

import java.util.Date;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.Table;

import com.fasterxml.jackson.annotation.JsonFormat;

import javax.persistence.*;

@Entity

@Table(name = "user")

public class User implements Serializable {

/**

* @Fields serialVersionUID : TODO

*/

private static final long serialVersionUID = -6550777752269466791L;

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private int id;

private String name;

private String password;

private String address;

@Column(name="loginName")

private String loginName;

@Temporal(TemporalType.TIMESTAMP)

private Date createTime;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public String getLoginName() {

return loginName;

}

public void setLoginName(String loginName) {

this.loginName = loginName;

}

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

public Date getCreateTime() {

return createTime;

}

public void setCreateTime(Date createTime) {

this.createTime = createTime;

}

}

4.建立仓库类:

package com.yunfeng.TestMySQL.Repository;

import java.util.List;

import org.springframework.data.domain.Page;

import org.springframework.data.domain.Pageable;

import org.springframework.data.jpa.repository.JpaRepository;

import org.springframework.data.jpa.repository.Query;

import org.springframework.data.repository.query.Param;

import com.yunfeng.TestMySQL.Model.User;

public interface UserRepository extends JpaRepository {

List findByNameOrAddress(String name, String address);

@Query("select a from User a where a.address = ?1")

public User findAddress(String address);

@Query("from User a where a.id = :id")

public User findByUserId(@Param("id")int userId);

@Query("from User a where a.id > :userId")

public Page findByUserIdGreaterThan(@Param("userId")int userId,Pageable pageable);

}

在查询时,通常需要同时根据多个属性进行查询,且查询的条件也格式各样(大于某个值、在某个范围等等),Spring Data JPA 为此提供了一些表达条件查询的关键字,大致如下:

And --- 等价于 SQL 中的 and 关键字,比如 findByUsernameAndPassword(String user, Striang pwd);

Or --- 等价于 SQL 中的 or 关键字,比如 findByUsernameOrAddress(String user, String addr);

Between --- 等价于 SQL 中的 between 关键字,比如 findBySalaryBetween(int max, int min);

LessThan --- 等价于 SQL 中的 "

GreaterThan --- 等价于 SQL 中的">",比如 findBySalaryGreaterThan(int min);

IsNull --- 等价于 SQL 中的 "is null",比如 findByUsernameIsNull();

IsNotNull --- 等价于 SQL 中的 "is not null",比如 findByUsernameIsNotNull();

NotNull --- 与 IsNotNull 等价;

Like --- 等价于 SQL 中的 "like",比如 findByUsernameLike(String user);

NotLike --- 等价于 SQL 中的 "not like",比如 findByUsernameNotLike(String user);

OrderBy --- 等价于 SQL 中的 "order by",比如 findByUsernameOrderBySalaryAsc(String user);

Not --- 等价于 SQL 中的 "! =",比如 findByUsernameNot(String user);

In --- 等价于 SQL 中的 "in",比如 findByUsernameIn(Collection userList) ,方法的参数可以是 Collection 类型,也可以是数组或者不定长参数;

NotIn --- 等价于 SQL 中的 "not in",比如 findByUsernameNotIn(Collection userList) ,方法的参数可以是 Collection 类型,也可以是数组或者不定长参数;

5.使用:

package com.yunfeng.TestMySQL;

import Request.*;

import Response.*;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.domain.Page;

import org.springframework.data.domain.PageRequest;

import org.springframework.data.domain.Pageable;

import org.springframework.data.domain.Sort;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import io.swagger.annotations.ApiOperation;

@RestController

public class TestController {

@ApiOperation(value = "查找用户", httpMethod = "POST")

@RequestMapping("/api/Test1")

public TestResponse showPerson(@RequestBody TestRequest input) {

TestResponse res = new TestResponse();

res.setUserName("zzzili");

res.setUserPass("pass");

return res;

}

@Autowired//(required=false)

private UserRepository context;

@ApiOperation(value="测试mysql2_通过JPA自带方法查询",httpMethod="POST")

@RequestMapping("/api/testmysql2")

public List TestMysql2() {

List list = context.findAll();

System.out.println(list);

return list;

}

@ApiOperation(value="测试mysql3_根据自定义方法名查询",httpMethod="POST")

@RequestMapping("/api/testmysql3")

public List TestMysql3() {

List list = context.findByNameOrAddress("zz","ss");

System.out.println(list);

return list;

}

@ApiOperation(value="测试mysql4_自定义query查询",httpMethod="POST")

@RequestMapping("/api/testmysql4")

public User TestMysql4() {

//User user = context.findEmail("zz");

User user2 = context.findByUserId(1);

System.out.println(user2);

return user2;

}

@ApiOperation(value="测试mysql5_分页查询",httpMethod="POST")

@RequestMapping("/api/testmysql5")

public List TestMysql5() {

Pageable pageable = new PageRequest(0,3, Sort.Direction.DESC,"id");

Page list = context.findByUserIdGreaterThan(1,pageable);

System.out.println(list);

return list.getContent();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值