You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
6.1 KiB
160 lines
6.1 KiB
import core.dao.BaseDao1;
|
|
import core.dao.BaseDao2;
|
|
import db.model.CidEntity;
|
|
import db.model.DataModel;
|
|
import db.model.TaskEntity;
|
|
import org.apache.commons.io.FileUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.apache.logging.log4j.Logger;
|
|
import org.hibernate.Session;
|
|
import org.hibernate.boot.Metadata;
|
|
import org.hibernate.boot.MetadataSources;
|
|
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
|
import org.hibernate.criterion.DetachedCriteria;
|
|
import org.hibernate.criterion.Projections;
|
|
import org.hibernate.metamodel.internal.MetamodelImpl;
|
|
import org.hibernate.service.ServiceRegistry;
|
|
import org.hibernate.tool.hbm2ddl.SchemaExport;
|
|
import org.hibernate.tool.schema.TargetType;
|
|
import org.junit.Test;
|
|
import org.junit.runner.RunWith;
|
|
import org.springframework.dao.DataAccessException;
|
|
import org.springframework.test.annotation.Rollback;
|
|
import org.springframework.test.context.ContextConfiguration;
|
|
import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
|
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import web.config.AppConfig;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.EnumSet;
|
|
import java.util.List;
|
|
|
|
//让测试运行于Spring环境
|
|
@RunWith(SpringJUnit4ClassRunner.class)
|
|
@SpringJUnitWebConfig
|
|
@ContextConfiguration(classes = {AppConfig.class})
|
|
public class SpringTest {
|
|
private Logger log=LogManager.getLogger();
|
|
|
|
@Resource
|
|
private BaseDao1 baseDao1;
|
|
|
|
@Resource
|
|
private BaseDao2 baseDao2;
|
|
|
|
@Test
|
|
public void factory(){
|
|
MetamodelImpl metamodel= (MetamodelImpl) baseDao1.getSessionFactory().getMetamodel();
|
|
}
|
|
|
|
@Test
|
|
@Transactional("transactionManager2")
|
|
@Rollback(false)
|
|
public void test1(){
|
|
DataModel dataModel=new DataModel();
|
|
dataModel.setCid(333);
|
|
TaskEntity taskEntity=new TaskEntity();
|
|
taskEntity.setApi("fdsfsdf");
|
|
baseDao2.save(dataModel);
|
|
}
|
|
|
|
@Test
|
|
@Transactional("transactionManager2")
|
|
@Rollback(false)
|
|
public void test(){
|
|
// for (int id=1;id<10;id++){
|
|
int id=103;
|
|
DataModel dataModel=baseDao1.get(DataModel.class,id);
|
|
CidEntity cidEntity=baseDao1.get(CidEntity.class,id);
|
|
if(dataModel!=null&&cidEntity!=null){
|
|
dataModel.setTypeId(cidEntity.getTypeid());
|
|
try {
|
|
log.info(baseDao2.save(dataModel));
|
|
}catch (DataAccessException e){
|
|
log.error(e);
|
|
}
|
|
}
|
|
|
|
|
|
// }
|
|
}
|
|
|
|
// @Test
|
|
public void exportTableSql(){
|
|
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(baseDao1.getSessionFactory().getProperties()).build();
|
|
Metadata metadata = new MetadataSources(serviceRegistry).addAnnotatedClass(DataModel.class).buildMetadata();
|
|
SchemaExport schemaExport = new SchemaExport();
|
|
schemaExport.setOutputFile("test.sql");
|
|
schemaExport.setFormat(true);
|
|
schemaExport.create(EnumSet.of(TargetType.SCRIPT), metadata);
|
|
|
|
|
|
List<Integer> typeid= (List<Integer>) baseDao1.findByCriteria(DetachedCriteria.forClass(CidEntity.class).setProjection(Projections.groupProperty("typeid")));
|
|
|
|
List<String> tableNames=new ArrayList<>();
|
|
StringBuffer sb=new StringBuffer();
|
|
for(Integer id:typeid){
|
|
String tableName="data_"+id;
|
|
sb.append("create table "+tableName+" like data_1;\n");
|
|
tableNames.add(tableName);
|
|
}
|
|
|
|
sb.append("create table data (\n" +
|
|
" cid integer not null,\n" +
|
|
" aid integer,\n" +
|
|
" author varchar(255),\n" +
|
|
" backup_vid varchar(255),\n" +
|
|
" cache varchar(255),\n" +
|
|
" cover varchar(255),\n" +
|
|
" dispatch integer,\n" +
|
|
" dispatch_servers integer,\n" +
|
|
" dp_done tinyint,\n" +
|
|
" dp_done_flv tinyint,\n" +
|
|
" dp_done_hdmp4 tinyint,\n" +
|
|
" dp_done_mp4 tinyint,\n" +
|
|
" duration double precision,\n" +
|
|
" files integer,\n" +
|
|
" letv_addr varchar(255),\n" +
|
|
" letv_vid integer,\n" +
|
|
" letv_vu varchar(255),\n" +
|
|
" mid integer,\n" +
|
|
" page integer,\n" +
|
|
" storage integer,\n" +
|
|
" storage_server integer,\n" +
|
|
" subtitle varchar(255),\n" +
|
|
" title varchar(255),\n" +
|
|
" type varchar(255),\n" +
|
|
" upload integer,\n" +
|
|
" upload_meta integer,\n" +
|
|
" vid varchar(255),\n" +
|
|
" vp integer,\n" +
|
|
" type_id integer,\n" +
|
|
" primary key (cid)\n" +
|
|
" ) engine=MERGE UNION=("+StringUtils.join(tableNames,",")+") insert_method=no;");
|
|
|
|
|
|
try {
|
|
FileUtils.writeStringToFile(new File("test.sql"),sb.toString(),"utf-8",true);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void test4() throws IOException {
|
|
DetachedCriteria criteria=DetachedCriteria.forClass(DataModel.class);
|
|
List<DataModel> dataEntities= (List<DataModel>) baseDao1.findByCriteria(criteria,10,10);
|
|
for(DataModel dataEntity:dataEntities){
|
|
log.info(dataEntity.getCid());
|
|
}
|
|
// 查询总条数
|
|
|
|
Long count=baseDao1.executeWithNativeSession((Session session)-> (Long) DetachedCriteria.forClass(DataModel.class).setProjection(Projections.rowCount()).setProjection(Projections.groupProperty("groupId")).getExecutableCriteria(session).uniqueResult());
|
|
|
|
}
|
|
}
|
|
|