Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring社交Twitter将数据保存到MySQL_Java_Mysql_Twitter_Spring Data Jpa_Spring Social Twitter - Fatal编程技术网

Java Spring社交Twitter将数据保存到MySQL

Java Spring社交Twitter将数据保存到MySQL,java,mysql,twitter,spring-data-jpa,spring-social-twitter,Java,Mysql,Twitter,Spring Data Jpa,Spring Social Twitter,我正试图保存我对TwitterAPI发出的请求中的一些数据。我知道,我必须在UpdateWeetsService类中设置我想要的对象,但我现在知道如何解析它们了。这就是我到目前为止所做的: UpdateWebetsService.java类: import javax.inject.Inject; import org.springframework.beans.factory.annotation.Value; import org.springframework.social.twitter

我正试图保存我对TwitterAPI发出的请求中的一些数据。我知道,我必须在UpdateWeetsService类中设置我想要的对象,但我现在知道如何解析它们了。这就是我到目前为止所做的:

UpdateWebetsService.java类:

import javax.inject.Inject;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.social.twitter.api.Tweet;
import org.springframework.social.twitter.api.Twitter;
import java.util.List;


public class UpdateTweetsService {@Value("${screenName}")
private final Twitter twitter;

@Inject
public UpdateTweetsService(Twitter twitter) {
    this.twitter = twitter;

}
/**
 * Performs a Request to get the UserTimeline from Twitter API
 */

 public List<Tweet> tweets() {

        return twitter.timelineOperations().getUserTimeline("${screenName}");    
 }
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

@Entity
@Table(name = "tweets")
public class Tweet {


    @Id
    @GeneratedValue
    @Column(columnDefinition = "INT unsigned")
    private Integer id;

    @NotEmpty
    @Length(max = 255)
    @Column(columnDefinition = "VARCHAR(255)", length = 255, nullable = false)
    private String profileImageUrl;

    @NotEmpty
    @Length(max = 64)
    @Column(columnDefinition = "VARCHAR(64)", length = 64, nullable = false)
    private String fromUser;

    @NotEmpty
    @Column(columnDefinition = "TEXT", nullable = false)
    private String text;

    @NotEmpty
    @Length(max = 255)
    @Column(columnDefinition = "VARCHAR(255)", length = 255, nullable = false)
    private String url;

    @NotEmpty
    @Column(columnDefinition = "FLOAT")
    private Float createDate;

    /*
     * Getter & Setter
     */

    public Integer getId() {
        return id;
    }

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

    public String getProfileImageUrl() {
        return profileImageUrl;
    }

    public void setProfileImageUrl(String profileImageUrl) {
        this.profileImageUrl = profileImageUrl;
    }

    public String getFromUser() {
        return fromUser;
    }

    public void setFromUser(String fromUser) {
        this.fromUser = fromUser;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public Float getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Float createDate) {
        this.createDate = createDate;
    }   

}

您可以使用Spring数据JPA保存实体。使用Spring Boot设置数据库非常容易

你可以在我的回购中签出代码,我为此更新了它。我使用了
PostgreSql
,您可以按照以下步骤通过更新
pom.xml
application.properties
文件轻松地将其更改为
MySql

您需要遵循以下步骤:

  • 在pom.xml中添加
    springbootstarter数据jpa
    mysql
    依赖项

    .....
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
    
  • 创建一个实体类
    TweetEntity
    ,您已经创建了该实体类,但将其从
    Tweet
    重命名为其他实体类,以避免您的
    Tweet.class
    org.springframework.social.twitter.api.Tweet.class

  • 为您的实体创建Spring数据JPA存储库接口

    package com.rawsanj.tweet.repository;
    
    import org.springframework.data.jpa.repository.JpaRepository;
    
    import com.rawsanj.tweet.entity.TweetEntity;
    
    /**
     * Spring Data JPA repository for the User entity.
     */
    public interface TweetZRepository extends JpaRepository<TweetEntity, Long> {
    
    }
    
  • 最后更新您的
    控制器

    package com.rawsanj.tweet.controller;
    ....
    import com.rawsanj.tweet.entity.TweetEntity;
    import com.rawsanj.tweet.repository.TweetZRepository ;
    
    @Controller
    @RequestMapping("/")
    public class HelloController {
    
        private TwitterTemplate twitterTemplate;
        private TweetZRepository tweetZRepository ;
    
        @Inject
        public HelloController(StreamService streamService, TwitterTemplate twitterTemplate, TweetZRepository tweetZRepository ) {
            this.streamService = streamService;
            this.twitterTemplate=twitterTemplate;
            this.tweetZRepository =tweetZRepository ;
        }
    
        @RequestMapping(value = "tweet/{search}/{count}",method=RequestMethod.GET)
        public String searchTwitter(Model model, @PathVariable String search, @PathVariable int count) {
            SearchResults results = twitterTemplate.searchOperations().search(
                    new SearchParameters(search)
                        .resultType(SearchParameters.ResultType.RECENT)
                        .count(count));
    
            List<Tweet> tweets = results.getTweets();        
            model.addAttribute("tweets", tweets);
    
            for (Tweet tweet : tweets) {            
                TweetEntity tweetEntity = new TweetEntity(tweet.getText(), tweet.getCreatedAt(), tweet.getFromUser(), tweet.getLanguageCode(), tweet.getLanguageCode());
                tweetZRepository.save(tweetEntity);
            }
            return "search";
        }
    }
    
    package com.rawsanj.tweet.controller;
    ....
    导入com.rawsanj.tweet.entity.TweetEntity;
    导入com.rawsanj.tweet.repository.TweetZRepository;
    @控制器
    @请求映射(“/”)
    公共类Hello控制器{
    私有推文模板推文模板;
    私人TweetZRepository TweetZRepository;
    @注入
    公共HelloController(StreamService StreamService、TwitterTemplate TwitterTemplate、TweetZRepository TweetZRepository){
    this.streamService=streamService;
    this.twitterTemplate=twitterTemplate;
    this.tweetZRepository=tweetZRepository;
    }
    @RequestMapping(value=“tweet/{search}/{count}”,method=RequestMethod.GET)
    公共字符串搜索Twitter(模型模型,@PathVariable字符串搜索,@PathVariable int count){
    SearchResults=twitterTemplate.searchOperations().search(
    新搜索参数(搜索)
    .resultType(SearchParameters.resultType.RECENT)
    .count(count));
    List tweets=results.getTweets();
    model.addAttribute(“tweets”,tweets);
    对于(Tweet-Tweet:tweets){
    TweetEntity TweetEntity=新的TweetEntity(tweet.getText()、tweet.getCreatedAt()、tweet.getFromUser()、tweet.getLanguageCode()、tweet.getLanguageCode());
    tweetZRepository.save(tweetEntity);
    }
    返回“搜索”;
    }
    }
    

  • 您可以使用Spring数据JPA保存实体。使用Spring Boot设置数据库非常容易

    你可以在我的回购中签出代码,我为此更新了它。我使用了
    PostgreSql
    ,您可以按照以下步骤通过更新
    pom.xml
    application.properties
    文件轻松地将其更改为
    MySql

    您需要遵循以下步骤:

  • 在pom.xml中添加
    springbootstarter数据jpa
    mysql
    依赖项

    .....
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
    
  • 创建一个实体类
    TweetEntity
    ,您已经创建了该实体类,但将其从
    Tweet
    重命名为其他实体类,以避免您的
    Tweet.class
    org.springframework.social.twitter.api.Tweet.class

  • 为您的实体创建Spring数据JPA存储库接口

    package com.rawsanj.tweet.repository;
    
    import org.springframework.data.jpa.repository.JpaRepository;
    
    import com.rawsanj.tweet.entity.TweetEntity;
    
    /**
     * Spring Data JPA repository for the User entity.
     */
    public interface TweetZRepository extends JpaRepository<TweetEntity, Long> {
    
    }
    
  • 最后更新您的
    控制器

    package com.rawsanj.tweet.controller;
    ....
    import com.rawsanj.tweet.entity.TweetEntity;
    import com.rawsanj.tweet.repository.TweetZRepository ;
    
    @Controller
    @RequestMapping("/")
    public class HelloController {
    
        private TwitterTemplate twitterTemplate;
        private TweetZRepository tweetZRepository ;
    
        @Inject
        public HelloController(StreamService streamService, TwitterTemplate twitterTemplate, TweetZRepository tweetZRepository ) {
            this.streamService = streamService;
            this.twitterTemplate=twitterTemplate;
            this.tweetZRepository =tweetZRepository ;
        }
    
        @RequestMapping(value = "tweet/{search}/{count}",method=RequestMethod.GET)
        public String searchTwitter(Model model, @PathVariable String search, @PathVariable int count) {
            SearchResults results = twitterTemplate.searchOperations().search(
                    new SearchParameters(search)
                        .resultType(SearchParameters.ResultType.RECENT)
                        .count(count));
    
            List<Tweet> tweets = results.getTweets();        
            model.addAttribute("tweets", tweets);
    
            for (Tweet tweet : tweets) {            
                TweetEntity tweetEntity = new TweetEntity(tweet.getText(), tweet.getCreatedAt(), tweet.getFromUser(), tweet.getLanguageCode(), tweet.getLanguageCode());
                tweetZRepository.save(tweetEntity);
            }
            return "search";
        }
    }
    
    package com.rawsanj.tweet.controller;
    ....
    导入com.rawsanj.tweet.entity.TweetEntity;
    导入com.rawsanj.tweet.repository.TweetZRepository;
    @控制器
    @请求映射(“/”)
    公共类Hello控制器{
    私有推文模板推文模板;
    私人TweetZRepository TweetZRepository;
    @注入
    公共HelloController(StreamService StreamService、TwitterTemplate TwitterTemplate、TweetZRepository TweetZRepository){
    this.streamService=streamService;
    this.twitterTemplate=twitterTemplate;
    this.tweetZRepository=tweetZRepository;
    }
    @RequestMapping(value=“tweet/{search}/{count}”,method=RequestMethod.GET)
    公共字符串搜索Twitter(模型模型,@PathVariable字符串搜索,@PathVariable int count){
    SearchResults=twitterTemplate.searchOperations().search(
    新搜索参数(搜索)
    .resultType(SearchParameters.resultType.RECENT)
    .count(count));
    List tweets=results.getTweets();
    model.addAttribute(“tweets”,tweets);
    对于(Tweet-Tweet:tweets){
    TweetEntity TweetEntity=新的TweetEntity(tweet.getText()、tweet.getCreatedAt()、tweet.getFromUser()、tweet.getLanguageCode()、tweet.getLanguageCode());
    tweetZRepository.save(tweetEntity);
    }
    返回“搜索”;
    }
    }