Server数据库达成CRUD,Server数据库的寄存进度并再次来到记录集合

By admin in 4858.com on 2019年8月11日

听大人讲Spring Boot,使用JPA操作Sql Server数据库实现CRUD,jpacrud

 完成一个RESTful服务,提供多少个访问接口,用来操作较轻便的维系人音讯,数据保存在Sql
Server数据库中。

 

1.选用STS创设工程。

利用STS成立RESTful工程,能够仿照效法:

《用Spring Tools Suite(STS)初叶叁个RESTful Web 瑟维斯》
《SpringBoot构建RESTful service完成Get和Post》

新建项目时的Project
Name,Group,Atifact,Package这个参数根据实际必要填。

种类引进重视web,JPA,SQL Server正视。

4858.com 1

 

成功构建后,pom.xml的开始和结果:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.kxh.example</groupId>
    <artifactId>demo0003</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo0003</name>
    <description>Demostrate that operate sql server</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

 

2.营造数据库表。

4858.com ,在SQL Sever中的指标数据库中建七个contact表。

表结构:

id是主键,况兼安装其为自增标志,能够自动生成递增的值作为id。

4858.com 2

 

3.创制包结构

根包为:com.kxh.example.demo

4858.com 3

 

 4.创办世界对象“联系人”实体。

在包“com.kxh.example.demo.domain”下开创类“Contact”,何况增加Entity注脚。

为id属性扩张Id注开胃示这是个主键。

为id属性扩张GeneratedValue,并设置id值生成的国策是自增。

package com.kxh.example.demo.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Contact {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private String name;

    private String phone;

    private String mail;

    public Contact() {
        super();
    }

    public Contact(String name, String phone, String mail) {
        super();

        this.name = name;
        this.phone = phone;
        this.mail = mail;
    }

    public long getId() {
        return this.id;
    }

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

    public String getName() {
        return this.name;
    }

    public void setName(String value) {
        this.name = value;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String value) {
        this.phone = value;
    }

    public String getMail() {
        return this.mail;
    }

    public void setMail(String value) {
        this.mail = value;
    }
}

Server数据库达成CRUD,Server数据库的寄存进度并再次来到记录集合。 

 5.创设数量操作对象。

在包“com.kxh.example.demo.dao”下创建接口“ContactsRepository”,从“JpaRepository”继承,能够做到最常用的CRUD。

该接口定义了基于name查一个联络员。也定义了足以透过对name的混淆查询联系人,findBy的写法能够参照他事他说加以考察官方文书档案以成功越来越多的询问。

package com.kxh.example.demo.dao;

import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;

import com.kxh.example.demo.domain.Contact;

public interface ContactsRepository extends JpaRepository<Contact, Long> {
    Contact findByName(String name);

    List<Contact> findByNameLike(String name);
}

 

6.创办RestController向外提供劳务

在包“com.kxh.example.demo.controller”先创立类“ContactsController”。

写上RestController注解,进行根url路线的映射。

将ContactsRepository定义为类成员变量,并打上Autowired注解,由框架自动举办实例化。

package com.kxh.example.demo.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.kxh.example.demo.dao.ContactsRepository;
import com.kxh.example.demo.domain.Contact;
import com.kxh.example.demo.service.ContactsService;

@RestController
@RequestMapping("/contacts")
public class ContactsController {

    @Autowired
    ContactsRepository contactsRepository;

    //新增
    @RequestMapping(value="/save/new", method=RequestMethod.POST)
    public Contact saveNewContact(@RequestBody Contact contact) {return this.contactsRepository.save(contact);
    }

    //更新
    @RequestMapping(value="/save/updated", method=RequestMethod.PUT)
    public Contact saveUpdatedContact(@RequestBody Contact contact) {
        Contact contactExisted = this.contactsRepository.findByName(contact.getName());
        contactExisted.setPhone(contact.getPhone());
        contactExisted.setMail(contact.getMail());
        return this.contactsRepository.save(contactExisted);
    }

    //删除
    @RequestMapping(value="/remove", method=RequestMethod.DELETE)
    public void removeContact(long id) {
        this.contactsRepository.delete(id);
    }

    //查询,通过name查询一条
    @RequestMapping(value="/query/byname", method=RequestMethod.GET)
    public Contact findContactByName(String name) {
        Contact contact = this.contactsRepository.findByName(name);
        return contact;
    }

    //查询,通过like name查询多条
    @RequestMapping(value="/query/likename", method=RequestMethod.GET)
    public List<Contact> findContactLikeName(String name) {
        String nameWhere = org.apache.commons.lang.StringUtils.join(new String[]{"%", name, "%"}, "");
        List<Contact> contacts = this.contactsRepository.findByNameLike(nameWhere);
        return contacts;
    }
}

 

7.完成,运行。

此间运用curl举办调护医治。

新建

执行curl的命令:

curl -i -H "Content-Type:application/json;charset:utf-8" -X POST  -d "{\"name\":\"Aissen\",\"phone\":\"13237123112\",\"mail\":\"[email protected]\"}" http://localhost:8080/contacts/save/new

推行后数据表中会扩展一条记下。

4858.com 4

 

更新

试行命令,修改联系人电话和信箱。

curl -i -H "Content-Type:application/json" -X PUT  -d "{\"name\":\"Aissen\",\"phone\":\"13231444444\",\"mail\":\"[email protected]\"}" http://localhost:8080/contacts/save/updated

实行后,记录被涂改。

4858.com 5

 

查询单个

在浏览器中做客查询rul。

http://localhost:8080/contacts/query/byname?name=Tom

结果:

4858.com 6

 

查询多个

在浏览器中拜见问调查询rul。

http://localhost:8080/contacts/query/likename?name=to

结果:

4858.com 7

 

删除

推行命令,参数id设为要求删除的联络人的id。

curl -i -X DELETE http://localhost:8080/contacts/remove?id=6

 

End

 

Boot,使用JPA操作Sql
Server数据库达成CRUD,jpacrud
完毕三个RESTful服务,提供多少个访谈接口,用来操作较简单的关系人音讯,数据保存…

 完毕多少个RESTful服务,提供多少个访问接口,用来操作较简单的关系人音讯,数据保存在Sql
Server数据库中。

 完毕一个RESTful服务,提供多少个访谈接口,用来操作较简单的交流人消息,数据保存在Sql
Server数据库中。

故事Spring Boot,使用JPA调用Sql Server数据库的积存进程并赶回记录集合,springjpa

在上一篇《基于Spring Boot,使用JPA操作Sql
Server数据库达成CRUD》中成就了应用JPA对实体数据的CRUD操作。

那便是说,有个别景况,会把有个别查询语句写在仓储进程中,由存储进程来回到记录集。

在此地就先通过EntityManager创制命名存款和储蓄进度的措施成功调用。

 

1.创设SQL存款和储蓄进程

仓库储存进程重返全数的联系人。

USE [demodb]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <bobenut>
-- Create date: <2017/9/14>
-- Description:    <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[proc_get_contacts_like_name]
    @name varchar(50)
AS
BEGIN
    SET NOCOUNT ON;
    SELECT * from contact where name like @name;
END

 

2.定义命名的仓库储存进度。

在包“com.kxh.example.demo.domain”下的“Contact”实体上编写制定期存款款和储蓄进程的照耀。

@NamedStoredProcedureQueries注利尿示能够包括多少个存款和储蓄进度的映射。

@NamedStoredProcedureQuery申明正是对一个累积进程的投射。

参数name,给此次映射取三个名字,后续调用时选拔。

参数procedureName,是数据库中实际的积攒进度的名字。

参数parameters,是对存款和储蓄进度输入或输出参数的映照定义。

package com.kxh.example.demo.domain;

import javax.persistence.Entity;
import javax.persistence.EntityResult;
import javax.persistence.FieldResult;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedStoredProcedureQueries;
import javax.persistence.NamedStoredProcedureQuery;
import javax.persistence.ParameterMode;
import javax.persistence.SqlResultSetMapping;
import javax.persistence.StoredProcedureParameter;

@Entity
@NamedStoredProcedureQueries({
    @NamedStoredProcedureQuery(
            name = "getContactsLikeName", 
            procedureName = "proc_get_contacts_like_name", 
            resultClasses = { Contact.class },
            parameters = {
                    @StoredProcedureParameter(
                            mode = ParameterMode.IN, 
                            name = "name", 
                            type = String.class)
            }
        )
})
public class Contact {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private String name;

    private String phone;

    private String mail;

    public Contact() {
        super();
    }

    public Contact(String name, String phone, String mail) {
        super();

        this.name = name;
        this.phone = phone;
        this.mail = mail;
    }

    public long getId() {
        return this.id;
    }

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

    public String getName() {
        return this.name;
    }

    public void setName(String value) {
        this.name = value;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String value) {
        this.phone = value;
    }

    public String getMail() {
        return this.mail;
    }

    public void setMail(String value) {
        this.mail = value;
    }
}

 

3.透过工作对象调用

在包“com.kxh.example.demo.service”下创制类“ContactsService”。

在类内,引进“EntityManager”,加上@Autowired注明由框架实例化。

由此”EntityManager”创立命名的存款和储蓄进程函数,并传到上面定义的映射名进行点名调用。

接下来为存储进程设置输入参数,奉行并重返结果。

package com.kxh.example.demo.service;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.StoredProcedureQuery;

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

import com.kxh.example.demo.domain.Contact;

@Component
public class ContactsService {
    @Autowired
    private EntityManager entityManager;

    @SuppressWarnings("unchecked")
    public List<Contact> findAllViaProc(String name) {
       StoredProcedureQuery storedProcedureQuery = this.entityManager.createNamedStoredProcedureQuery("getContactsLikeName");
       storedProcedureQuery.setParameter("name", name);
       storedProcedureQuery.execute();
       return storedProcedureQuery.getResultList();
    }
}

 

4.因此RestController向外提供服务

引进“ContactService”作为成员变量,并Autowired。

扩大三个新的访谈路线映射,在拍卖措施中调用contactsService.findAllViaProc(nameWhere)获取查询结果集。

package com.kxh.example.demo.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.kxh.example.demo.dao.ContactsRepository;
import com.kxh.example.demo.domain.Contact;
import com.kxh.example.demo.service.ContactsService;

@RestController
@RequestMapping("/contacts")
public class ContactsController {

    @Autowired
    ContactsService contactsService;
    //省略//通过存储过程查
    @RequestMapping(value="/query/viaproc/likename", method=RequestMethod.GET)
    public List<Contact> findContactsUseProcLikeName(String name) {
        System.out.println("kxh1");
        String nameWhere = org.apache.commons.lang.StringUtils.join(new String[]{"%", name, "%"}, "");
        List<Contact> contacts = contactsService.findAllViaProc(nameWhere);
        if(contacts == null) {
            return new ArrayList<Contact>();
        } else {
            return contacts;
        }
    }

    //省略
}

 

代码

 

End

 

Boot,使用JPA调用Sql
Server数据库的仓储进程并回到记录集结,springjpa 在上一篇《基于Spring
Boot,使用JPA操作Sql Server数据库完结CTucson…

 

 

1.选取STS成立工程。

1.行使STS创造工程。

行使STS创立RESTful工程,能够参考:

使用STS创立RESTful工程,能够仿效:

《用Spring Tools Suite(STS)早先二个RESTful Web
Service》
《SpringBoot构建RESTful
service完成Get和Post》

《用Spring Tools Suite(STS)开头三个RESTful Web
Service》
《SpringBoot构建RESTful
service完成Get和Post》

新建项目时的Project
Name,Group,Atifact,Package那么些参数依据实际须要填。

新建项目时的Project
Name,Group,Atifact,Package那么些参数依据实际必要填。

品类引进重视web,JPA,SQL Server信赖。

类别引进重视web,JPA,SQL Server依赖。

4858.com 8

4858.com 9

 

 

达成塑造后,pom.xml的剧情:

产生营造后,pom.xml的从头到尾的经过:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.kxh.example</groupId>
    <artifactId>demo0003</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo0003</name>
    <description>Demostrate that operate sql server</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.kxh.example</groupId>
    <artifactId>demo0003</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo0003</name>
    <description>Demostrate that operate sql server</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

 

 

2.创设数据库表。

2.营造数据库表。

在SQL Sever中的目的数据库中国建工业总会公司一个contact表。

在SQL Sever中的目的数据库中国建工业总集合团三个contact表。

表结构:

表结构:

id是主键,况兼安装其为自增标记,能够自动生成递增的值作为id。

id是主键,而且安装其为自增标志,能够自动生成递增的值作为id。

4858.com 10

4858.com 11

 

 

3.创立包结构

3.成立包结构

根包为:com.kxh.example.demo

根包为:com.kxh.example.demo

4858.com 12

4858.com 13

 

 

 4.制造世界对象“联系人”实体。

 4.创设世界对象“联系人”实体。

在包“com.kxh.example.demo.domain”下创办类“Contact”,并且拉长Entity注明。

在包“com.kxh.example.demo.domain”下创办类“Contact”,何况增加Entity评释。

为id属性扩展Id注益气示那是个主键。

为id属性扩展Id注消痈示那是个主键。

为id属性扩大GeneratedValue,并设置id值生成的政策是自增。

为id属性扩张GeneratedValue,并设置id值生成的计谋是自增。

package com.kxh.example.demo.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Contact {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private String name;

    private String phone;

    private String mail;

    public Contact() {
        super();
    }

    public Contact(String name, String phone, String mail) {
        super();

        this.name = name;
        this.phone = phone;
        this.mail = mail;
    }

    public long getId() {
        return this.id;
    }

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

    public String getName() {
        return this.name;
    }

    public void setName(String value) {
        this.name = value;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String value) {
        this.phone = value;
    }

    public String getMail() {
        return this.mail;
    }

    public void setMail(String value) {
        this.mail = value;
    }
}
package com.kxh.example.demo.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Contact {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private String name;

    private String phone;

    private String mail;

    public Contact() {
        super();
    }

    public Contact(String name, String phone, String mail) {
        super();

        this.name = name;
        this.phone = phone;
        this.mail = mail;
    }

    public long getId() {
        return this.id;
    }

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

    public String getName() {
        return this.name;
    }

    public void setName(String value) {
        this.name = value;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String value) {
        this.phone = value;
    }

    public String getMail() {
        return this.mail;
    }

    public void setMail(String value) {
        this.mail = value;
    }
}

 

 

 5.创立数量操作对象。

 5.创立数量操作对象。

在包“com.kxh.example.demo.dao”下制造接口“ContactsRepository”,从“JpaRepository”承继,能够造成最常用的CRUD。

在包“com.kxh.example.demo.dao”下开创接口“ContactsRepository”,从“JpaRepository”承继,能够产生最常用的CRUD。

该接口定义了基于name查两个联系人。也定义了足以经过对name的混淆查询联系人,findBy的写法能够参照他事他说加以考察官方文书档案以变成越多的询问。

该接口定义了基于name查多少个联络员。也定义了能够通过对name的歪曲查询联系人,findBy的写法能够参见官方文书档案以形成越来越多的查询。

package com.kxh.example.demo.dao;

import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;

import com.kxh.example.demo.domain.Contact;

public interface ContactsRepository extends JpaRepository<Contact, Long> {
    Contact findByName(String name);

    List<Contact> findByNameLike(String name);
}
package com.kxh.example.demo.dao;

import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;

import com.kxh.example.demo.domain.Contact;

public interface ContactsRepository extends JpaRepository<Contact, Long> {
    Contact findByName(String name);

    List<Contact> findByNameLike(String name);
}

 

 

6.创造RestController向外提供服务

6.创办RestController向外提供服务

在包“com.kxh.example.demo.controller”先创设类“ContactsController”。

在包“com.kxh.example.demo.controller”先创立类“ContactsController”。

写上RestController注解,举行根url路线的光彩夺目。

写上RestController注脚,举行根url路线的映照。

将ContactsRepository定义为类成员变量,并打上Autowired注脚,由框架自动进行实例化。

将ContactsRepository定义为类成员变量,并打上Autowired注脚,由框架自动举行实例化。

package com.kxh.example.demo.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.kxh.example.demo.dao.ContactsRepository;
import com.kxh.example.demo.domain.Contact;
import com.kxh.example.demo.service.ContactsService;

@RestController
@RequestMapping("/contacts")
public class ContactsController {

    @Autowired
    ContactsRepository contactsRepository;

    //新增
    @RequestMapping(value="/save/new", method=RequestMethod.POST)
    public Contact saveNewContact(@RequestBody Contact contact) {return this.contactsRepository.save(contact);
    }

    //更新
    @RequestMapping(value="/save/updated", method=RequestMethod.PUT)
    public Contact saveUpdatedContact(@RequestBody Contact contact) {
        Contact contactExisted = this.contactsRepository.findByName(contact.getName());
        contactExisted.setPhone(contact.getPhone());
        contactExisted.setMail(contact.getMail());
        return this.contactsRepository.save(contactExisted);
    }

    //删除
    @RequestMapping(value="/remove", method=RequestMethod.DELETE)
    public void removeContact(long id) {
        this.contactsRepository.delete(id);
    }

    //查询,通过name查询一条
    @RequestMapping(value="/query/byname", method=RequestMethod.GET)
    public Contact findContactByName(String name) {
        Contact contact = this.contactsRepository.findByName(name);
        return contact;
    }

    //查询,通过like name查询多条
    @RequestMapping(value="/query/likename", method=RequestMethod.GET)
    public List<Contact> findContactLikeName(String name) {
        String nameWhere = org.apache.commons.lang.StringUtils.join(new String[]{"%", name, "%"}, "");
        List<Contact> contacts = this.contactsRepository.findByNameLike(nameWhere);
        return contacts;
    }
}
package com.kxh.example.demo.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.kxh.example.demo.dao.ContactsRepository;
import com.kxh.example.demo.domain.Contact;
import com.kxh.example.demo.service.ContactsService;

@RestController
@RequestMapping("/contacts")
public class ContactsController {

    @Autowired
    ContactsRepository contactsRepository;

    //新增
    @RequestMapping(value="/save/new", method=RequestMethod.POST)
    public Contact saveNewContact(@RequestBody Contact contact) {return this.contactsRepository.save(contact);
    }

    //更新
    @RequestMapping(value="/save/updated", method=RequestMethod.PUT)
    public Contact saveUpdatedContact(@RequestBody Contact contact) {
        Contact contactExisted = this.contactsRepository.findByName(contact.getName());
        contactExisted.setPhone(contact.getPhone());
        contactExisted.setMail(contact.getMail());
        return this.contactsRepository.save(contactExisted);
    }

    //删除
    @RequestMapping(value="/remove", method=RequestMethod.DELETE)
    public void removeContact(long id) {
        this.contactsRepository.delete(id);
    }

    //查询,通过name查询一条
    @RequestMapping(value="/query/byname", method=RequestMethod.GET)
    public Contact findContactByName(String name) {
        Contact contact = this.contactsRepository.findByName(name);
        return contact;
    }

    //查询,通过like name查询多条
    @RequestMapping(value="/query/likename", method=RequestMethod.GET)
    public List<Contact> findContactLikeName(String name) {
        String nameWhere = org.apache.commons.lang.StringUtils.join(new String[]{"%", name, "%"}, "");
        List<Contact> contacts = this.contactsRepository.findByNameLike(nameWhere);
        return contacts;
    }
}

 

 

7.完成,运行。

7.完成,运行。

此间运用curl实行调整。

这里运用curl实行调解。

新建

新建

执行curl的命令:

执行curl的命令:

curl -i -H "Content-Type:application/json;charset:utf-8" -X POST  -d "{\"name\":\"Aissen\",\"phone\":\"13237123112\",\"mail\":\"aissen@ss.com\"}" http://localhost:8080/contacts/save/new
curl -i -H "Content-Type:application/json;charset:utf-8" -X POST  -d "{\"name\":\"Aissen\",\"phone\":\"13237123112\",\"mail\":\"aissen@ss.com\"}" http://localhost:8080/contacts/save/new

实践后数据表中会增添一条记下。

推行后数据表中会扩展一条记下。

4858.com 14

4858.com 15

 

 

更新

更新

推行命令,修改联系人电话和信箱。

试行命令,修改联系人电话和邮箱。

curl -i -H "Content-Type:application/json" -X PUT  -d "{\"name\":\"Aissen\",\"phone\":\"13231444444\",\"mail\":\"Aissen111@cc.com\"}" http://localhost:8080/contacts/save/updated
curl -i -H "Content-Type:application/json" -X PUT  -d "{\"name\":\"Aissen\",\"phone\":\"13231444444\",\"mail\":\"Aissen111@cc.com\"}" http://localhost:8080/contacts/save/updated

实行后,记录被涂改。

实施后,记录被更改。

4858.com 16

4858.com 17

 

 

询问单个

查询单个

在浏览器中访谈查询rul。

在浏览器中访谈查询rul。

http://localhost:8080/contacts/query/byname?name=Tom
http://localhost:8080/contacts/query/byname?name=Tom

结果:

结果:

4858.com 18

4858.com 19

 

 

询问八个

查询多个

在浏览器中探望查询rul。

在浏览器中拜会问调查询rul。

http://localhost:8080/contacts/query/likename?name=to
http://localhost:8080/contacts/query/likename?name=to

结果:

结果:

4858.com 20

4858.com 21

 

 

删除

删除

实行命令,参数id设为须求删除的关系人的id。

实行命令,参数id设为必要删除的联系人的id。

curl -i -X DELETE http://localhost:8080/contacts/remove?id=6
curl -i -X DELETE http://localhost:8080/contacts/remove?id=6

 

 

代码

代码

 

 

End

End

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有