集成需要的一些引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
配置文件
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=30000
spring.datasource.validationQuery=SELECT 'x'
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=false
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.filters=stat
spring.jpa.database=mysql
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.data.mongodb.database=runoob
spring.data.mongodb.uri=mongodb://127.0.0.1:27017
配置mongo和mysql的一些连接参数
JPA mysql
repository
@Repository
public interface UserEntityRepository extends JpaRepository<UserEntity,String> {
@Modifying
@Query(value = "update UserEntity u set u.age = ?1 where u.id = ?2")
int modifyAgeById(int age,String id);
@Query
UserEntity findByName(String name);
@Query
List<UserEntity> findByNameContains(String name);
}
service
@Service
public class UserService {
@Autowired
UserEntityRepository userEntityRepository;
public UserEntity findOne(String id){
return userEntityRepository.findById(id).get();
}
public UserEntity findByName(String name){
return userEntityRepository.findByName(name);
}
public List<UserEntity> findByNameContains(String name){
return userEntityRepository.findByNameContains(name);
}
public void saveUser(UserEntity userEntity){
userEntity.setId(UUIDUtils.get32UUID());
userEntityRepository.save(userEntity);
}
public void deleteUser(String id){
userEntityRepository.deleteById(id);
}
public void updateUser(UserEntity userEntity){
userEntityRepository.save(userEntity);
}
public List<UserEntity> findAll(){
return userEntityRepository.findAll();
}
}
entity
@Entity
@DynamicUpdate
@DynamicInsert
public class UserEntity {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid.hex")
@Column(name = "id", nullable = false, length = 32, unique = true)
private String id;
private int age;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "id:"+id+",age:"+age+",name:"+name;
}
}
controller
@RestController
public class TestController{
@Autowired
UserService userService;
@RequestMapping("/userGet")
public String getUser(String name){
UserEntity userEntity=userService.findByName(name);
return "save"+userEntity.toString();
}
@RequestMapping("/userNameLike")
public String userNameLike(String name){
List<UserEntity> userEntity=userService.findByNameContains(name);
StringBuffer sb=new StringBuffer();
userEntity.forEach(userEntity1 -> sb.append(userEntity1.toString()+"\n"));
return "save\n"+sb;
}
}
JPA mongo
entity
@Document
public class Order {
@Id
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
repository
@Repository
public interface OrderRepository extends MongoRepository<Order,String> {
@Query
List<Order> findByNameContains(String name);
@Query
Page<Order> findByNameContains(String name, Pageable pageable);
}
service
@Service
public class OrderService {
@Autowired
private OrderRepository orderRepository;
public void save(Order order){
orderRepository.save(order);
}
public Order findOne(String id){
return orderRepository.findById(id).get();
}
public List<Order> findByNameContains(String name){
return orderRepository.findByNameContains(name);
}
public Page<Order> findByNameContains(String name, Pageable pageable){
return orderRepository.findByNameContains(name,pageable);
}
}
controller
@RestController
public class TestController{
@Autowired
OrderService orderService;
//mongo
@RequestMapping("/orderSave")
public String saveOrder(Order order){
order.setId(UUIDUtils.get32UUID());
orderService.save(order);
return "save\n"+order.getName();
}
//mongo
@RequestMapping("/orderGet")
public List<Order> getOrder(String name){
List<Order> orders= orderService.findByNameContains(name);
return orders;
}
//mongo
@RequestMapping("/orderGetPage")
public Page<Order> getOrderPage(String name){
//page从0开始这里,实际页数-1
org.springframework.data.domain.Pageable pageable=new PageRequest(0,4,new Sort(Sort.Direction.DESC,"name"));
Page<Order> orders= orderService.findByNameContains(name,pageable);
return orders;
}
}
测试 JPA mysql
测试 JPA mongo