Spring 中的特殊查询
Special query in Spring
我想使用这种查询将 table 上的数据插入到另一个
insert into mytable1 ( c1, c2 ) SELECT b1,b2 from mytable2;
我正在使用 spring,其中有一个我使用的 DAO class 的工作示例
package gp.dao;
import gp.model.Medic;
import gp.model.MvtMedic;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedProperty;
import javax.sql.DataSource;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import gp.interfaces.InterfaceDao;
public class MvtMedicDaoImpl implements InterfaceDao, Serializable {
private static final long serialVersionUID = 1L;
private DataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public void insert(Object obj) {
// TODO Auto-generated method stub
MvtMedic mvtMedic = (MvtMedic) obj;
String sql = "INSERT INTO mvtstock ( codeproduit, typemvt, quantite,"+
"date_arrivee, date_expir, fournisseur, numbco, prix_unit)"+
" VALUES (?,?,?,?,?,?,?,?)";
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(sql, new Object[]{ mvtMedic.getCodeproduit(),"E",mvtMedic.getQuantite(),
mvtMedic.getDate_arrivee(), mvtMedic.getDate_expir(), mvtMedic.getFournisseur(), mvtMedic.getNumbco(),
mvtMedic.getPrix_unit()});
}
@Override
public void delete(Object obj) {
// TODO Auto-generated method stub
}
@Override
public Object findById(Object ref) {
// TODO Auto-generated method stub
return null;
}
@Override
public void modify(Object obj) {
// TODO Auto-generated method stub
}
@Override
public List<?> execRequete(String sql) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
@SuppressWarnings("unchecked")
List<MvtMedic> listMvtMed = jdbcTemplate.query(sql, new BeanPropertyRowMapper(MvtMedic.class));
return listMvtMed;
}
@Override
public List<MvtMedic> findAll() {
// TODO Auto-generated method stub
String sql = " SELECT m.codeproduit as codeproduit ,p.libelle as libelle,m.quantite as quantite,"
+ "coalesce(m.prix_unit, 0) as prix_unit,coalesce(m.prix_total, 0) as prix_total,m.fournisseur as fournisseur,m.numbco as numbco,"
+ "m.date_arrivee as date_arrivee,m.date_expir as date_expir"
+ " FROM mvtstock m LEFT JOIN stockpharm p ON m.codeproduit=p.codeproduit where typemvt='E'"
+ "order by m.date_arrivee desc" ;
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
@SuppressWarnings("unchecked")
List<MvtMedic> listMvtMed = jdbcTemplate.query(sql, new BeanPropertyRowMapper(MvtMedic.class));
return listMvtMed;
}
@Override
public Object getLastId() {
// TODO Auto-generated method stub
return null;
}
}
现在我的问题是我应该如何使用插入方法来提供 select
(插入我的table1 ( c1, c2 ) SELECT b1,b2 from mytable2;)
jdbcTemplate.update(...
的结果值
public void insert(Object obj) {
// TODO Auto-generated method stub
MvtMedic mvtMedic = (MvtMedic) obj;
String sql = "INSERT INTO mvtstock ( codeproduit, typemvt, quantite,"+
"date_arrivee, date_expir, fournisseur, numbco, prix_unit)"+
" VALUES (?,?,?,?,?,?,?,?)";
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(sql, new Object[]{ // DATAS of The selec});
}
jdbcTemplate 执行您告诉它执行的任何内容。所以你可以这样做:
@Override
public void insert(Object obj) {
String sql = "insert into mytable1 ( c1, c2 ) SELECT b1,b2 from mytable2";
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(sql);
}
PS: 最好创建一个 JdbcTemplate bean 作为单例并注入到 dao.Dont' 每次创建一个新的。
我想使用这种查询将 table 上的数据插入到另一个
insert into mytable1 ( c1, c2 ) SELECT b1,b2 from mytable2;
我正在使用 spring,其中有一个我使用的 DAO class 的工作示例
package gp.dao;
import gp.model.Medic;
import gp.model.MvtMedic;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedProperty;
import javax.sql.DataSource;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import gp.interfaces.InterfaceDao;
public class MvtMedicDaoImpl implements InterfaceDao, Serializable {
private static final long serialVersionUID = 1L;
private DataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public void insert(Object obj) {
// TODO Auto-generated method stub
MvtMedic mvtMedic = (MvtMedic) obj;
String sql = "INSERT INTO mvtstock ( codeproduit, typemvt, quantite,"+
"date_arrivee, date_expir, fournisseur, numbco, prix_unit)"+
" VALUES (?,?,?,?,?,?,?,?)";
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(sql, new Object[]{ mvtMedic.getCodeproduit(),"E",mvtMedic.getQuantite(),
mvtMedic.getDate_arrivee(), mvtMedic.getDate_expir(), mvtMedic.getFournisseur(), mvtMedic.getNumbco(),
mvtMedic.getPrix_unit()});
}
@Override
public void delete(Object obj) {
// TODO Auto-generated method stub
}
@Override
public Object findById(Object ref) {
// TODO Auto-generated method stub
return null;
}
@Override
public void modify(Object obj) {
// TODO Auto-generated method stub
}
@Override
public List<?> execRequete(String sql) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
@SuppressWarnings("unchecked")
List<MvtMedic> listMvtMed = jdbcTemplate.query(sql, new BeanPropertyRowMapper(MvtMedic.class));
return listMvtMed;
}
@Override
public List<MvtMedic> findAll() {
// TODO Auto-generated method stub
String sql = " SELECT m.codeproduit as codeproduit ,p.libelle as libelle,m.quantite as quantite,"
+ "coalesce(m.prix_unit, 0) as prix_unit,coalesce(m.prix_total, 0) as prix_total,m.fournisseur as fournisseur,m.numbco as numbco,"
+ "m.date_arrivee as date_arrivee,m.date_expir as date_expir"
+ " FROM mvtstock m LEFT JOIN stockpharm p ON m.codeproduit=p.codeproduit where typemvt='E'"
+ "order by m.date_arrivee desc" ;
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
@SuppressWarnings("unchecked")
List<MvtMedic> listMvtMed = jdbcTemplate.query(sql, new BeanPropertyRowMapper(MvtMedic.class));
return listMvtMed;
}
@Override
public Object getLastId() {
// TODO Auto-generated method stub
return null;
}
}
现在我的问题是我应该如何使用插入方法来提供 select
(插入我的table1 ( c1, c2 ) SELECT b1,b2 from mytable2;) jdbcTemplate.update(...
的结果值public void insert(Object obj) {
// TODO Auto-generated method stub
MvtMedic mvtMedic = (MvtMedic) obj;
String sql = "INSERT INTO mvtstock ( codeproduit, typemvt, quantite,"+
"date_arrivee, date_expir, fournisseur, numbco, prix_unit)"+
" VALUES (?,?,?,?,?,?,?,?)";
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(sql, new Object[]{ // DATAS of The selec});
}
jdbcTemplate 执行您告诉它执行的任何内容。所以你可以这样做:
@Override
public void insert(Object obj) {
String sql = "insert into mytable1 ( c1, c2 ) SELECT b1,b2 from mytable2";
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(sql);
}
PS: 最好创建一个 JdbcTemplate bean 作为单例并注入到 dao.Dont' 每次创建一个新的。