Java Spring社交Twitter将数据保存到MySQL
我正试图保存我对TwitterAPI发出的请求中的一些数据。我知道,我必须在UpdateWeetsService类中设置我想要的对象,但我现在知道如何解析它们了。这就是我到目前为止所做的: UpdateWebetsService.java类: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
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
您需要遵循以下步骤:
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
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
您需要遵循以下步骤:
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
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);
}
返回“搜索”;
}
}