当前位置: 首页 > 知识库问答 >
问题:

向sql添加数据

凌啸
2023-03-14

目前,我学习如何使用SpringBoot和访问多个数据库。在学习过程中,我遇到了向mysql表添加数据的问题。在我使用插入。。。。Value()要添加数据,当我使用get方法(SpringBoot)在网站上查找(显示)数据时,表仍然显示为null(无数据)。你们能就我的错误给我一些建议吗。

  • 额外信息:我把mysql表放在SpringBoot的资源文件夹中。当我使用get方法(Springboot的findallValue)时,我希望看到我添加到表中的值存在于网站上

这是我的代码:

MYSQL表

CREATE TABLE  Tax (

 id INT(6),

 taxable_income VARCHAR(50) ,

 addition_charge DECIMAL(10,2) ,

 charge_every_one_dollar DECIMAL(10,2),


 primary key (id)
);

INSERT INTO Tax (id,taxable_income,  addition_charge , charge_every_one_dollar ) 
VALUES  (1,"$0 - $18,200" , 0 , 0);

配置


import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;

import com.example.demo.Entity.table.Tax;

@Configuration
@EnableJpaRepositories(basePackages = "com.example.demo.Repo.table",
        entityManagerFactoryRef = "TaxEntityManagerFactory",
        transactionManagerRef= "TaxTransactionManager")
public class TaxTableConfiguration {

    @Bean
    @ConfigurationProperties("app.datasource.tax")
    public DataSourceProperties TaxDataSourceProperties() {
        return new DataSourceProperties();
    }

    @Bean
    @ConfigurationProperties("app.datasource.tax.configuration")
    public DataSource TaxDataSource() {
        return TaxDataSourceProperties().initializeDataSourceBuilder()
                .type(BasicDataSource.class).build();
    }

    @Bean(name = "TaxEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean TaxEntityManagerFactory(
            EntityManagerFactoryBuilder builder) {
        return builder
                .dataSource(TaxDataSource())
                .packages(Tax.class)
                .build();
    }

    @Bean
    public PlatformTransactionManager TaxTransactionManager(
            final @Qualifier("TaxEntityManagerFactory") LocalContainerEntityManagerFactoryBean TaxEntityManagerFactory) {
        return new JpaTransactionManager(TaxEntityManagerFactory.getObject());
    }
}

主控制器

package com.example.demo;

import com.example.demo.Entity.table.Tax;
import com.example.demo.Entity.use.User;
import com.example.demo.Repo.table.TaxtableRepository;
import com.example.demo.Repo.use.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController // This means that this class is a Controller
@RequestMapping(path="/demo") // This means URL's start with /demo (after Application path)
public class MainController {
  @Autowired // This means to get the bean called userRepository
         // Which is auto-generated by Spring, we will use it to handle the data
  private UserRepository userRepository;
  

  @Autowired 
  private TaxtableRepository taxRepository;

  @PostMapping(path="/add") // Map ONLY POST Requests
  public @ResponseBody String addNewUser (@RequestParam String fname,@RequestParam String lname,
  @RequestParam Integer p_a_salary,@RequestParam Float super_rate,@RequestParam String payment_date ) {
    // @ResponseBody means the returned String is the response, not a view name
    // @RequestParam means it is a parameter from the GET or POST request

    User n = new User();
    n.setlName(lname);
    n.setfName(fname);
    n.set_payment_date(payment_date);
    n.set_anual_salary(p_a_salary);
    n.set_super_rate(super_rate);
    userRepository.save(n);
    return "Saved";
  }
  
  @GetMapping(path="/tax")
  public @ResponseBody Iterable<Tax> getAllTaxs() {
    // This returns a JSON or XML with the users
    return taxRepository.findAll();
  }
  
  @GetMapping(path="/all")
  public @ResponseBody Iterable<User> getAllUsers() {
    // This returns a JSON or XML with the users
    return userRepository.findAll();
  }
}

实体

package com.example.demo.Entity.table;

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

@Entity // This tells Hibernate to make a table out of this class
public class Tax {
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private Long id;

  private String  taxable_income;

  private Double  addition_charge;
  
  private Double  charge_every_one_dollar;

  
  public Long getId() {
    return id;
  }

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

  public String get_TaxableIncome() {
    return taxable_income;
  }

  public void set_TaxableIncome(String taxable_income) {
    this.taxable_income = taxable_income;
  }

  public Double get_addition_charge() {
    return addition_charge;
  }

  public void set_additonal_charge(Double addition_charge) {
    this.addition_charge = addition_charge;
  }

  public Double get_charge_every_one_dollar() {
    return charge_every_one_dollar;
  }

  public void set_charge_every_one_dollar(Double charge_every_one_dollar) {
    this.charge_every_one_dollar = charge_every_one_dollar;
  }


  
}

应用

#first  db : 

app.datasource.user.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/taxdb
app.datasource.user.username=user
app.datasource.user.password=password
app.datasource.driverClassName=com.mysql.cj.jdbc.Driver

#second db: 
app.datasource.tax.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/calculatedb
app.datasource.tax.username=user
app.datasource.tax.password=password
app.datasource.tax.driverClassName=com.mysql.cj.jdbc.Driver


spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql=true
spring.jpa.database=mysql
spring.jpa.open-in-view=true
server.port = 8080
# spring.profiles.active=@spring.profil

资料库

package com.example.demo.Repo.table;

 

import com.example.demo.Entity.table.Tax;

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


@Repository
public interface TaxtableRepository extends JpaRepository<Tax ,Integer> {

}

我把我的mysql文件放在Springboot里

共有1个答案

夹谷飞龙
2023-03-14

查看此链接https://www.baeldung.com/spring-boot-data-sql-and-schema-sql

您可以将文件添加到类路径中,即src/main/resources文件夹中,spring将自动检测并执行您的文件。希望这能帮到你。

 类似资料:
  • 抱歉,我对SQL是全新的。我试图在SQL中添加一个列,用于计算as shipping date和todays date之间的天数差。 当我想查看天数时,以下操作非常有效 但是,当我尝试用下面的代码创建一个新列时,我遇到了错误 #1064-您的SQL语法有错误;查看与您的MariaDB服务器版本相对应的手册,以了解在第1行“as cast(DATEDIFF(now(),shipping_date))

  • 问题内容: 是否可以在向其添加一些参数数据的同时将请求转发给另一个控制器?我尝试添加到ModelMap中,但是它似乎不存在问题。我正在做类似的事情: 我能想到的唯一其他方法是将参数放在会话上,然后将其弹出目标控制器。 问题答案: 最简单的方法是将数据添加到请求中。 由于这是转发,因此将相同的请求传递到服务器内的不同处理程序。 作为示例,让我们从两个控制器的简单设置开始,一个转发到另一个: 添加数据

  • 问题内容: $(‘div’).data(‘info’, 1); 我在jquery中创建元素。之后,我要添加属性“数据”。他很喜欢,并且被添加了,但是在DOM中,这并不明显,我无法使用 问题答案: 使用方法: 请注意,这不会创建实际的属性。如果需要创建属性,请使用:

  • 我在jQuery中创建元素。之后,我想添加属性“数据”。他的喜欢,并添加,但在DOM中,这是不明显的,我不能得到的项目,使用 jsfiddle

  • 首先,我不确定这是不是实现我想要的东西的正确方法..我正在尝试将如下所示的导出绑定添加到router . navigate()-方法: 问题是我从不使用该指令,而是通过路由器来处理: 我如何实现相同的导出绑定从第一个例子中的接受呼叫()-方法?我已经添加了一个输入()变量,并尝试使用queryParams,如下所示: 但这并不起作用。

  • 问题内容: 我尝试更新我的插件。因此,我必须升级mysql_table。但是当尝试新列时,程序会获得异常。 这是我当前的表格: 现在,我向colum添加多一张桌子。我尝试更改表,一次工作,并添加一列,但又刷新一次,我收到此错误。 这是我的代码 这是我的错误 WordPress数据库错误:[重复的列名’say_state’] ALTER TABLE wp_customer_say添加了say_sta