提交 ea256d2b authored 作者: ww1xhqc's avatar ww1xhqc

[数据模型] 新增聚合对象生成xml方法。

上级 cc953f6b
......@@ -13,4 +13,10 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
* @Version 1.0
*/
public interface TableInfoDao extends JpaRepository<TableInfo, Integer>, JpaSpecificationExecutor<TableInfo> {
/**
* 根据表名查询tableInfo
* @param name
* @return
*/
TableInfo findByModelName(String name);
}
package com.tykj.workflowcore.model_layer.dao;
import com.tykj.workflowcore.model_layer.entity.TableInfoEX;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @ClassName TableInfoExDao
* @Description TODO
* @Author WWW
* @Date 2021/4/1 17:00
* @Version 1.0
*/
public interface TableInfoExDao extends JpaRepository<TableInfoEX, Integer>, JpaSpecificationExecutor<TableInfoEX> {
}
......@@ -25,7 +25,6 @@ import java.io.Serializable;
@Data
@NoArgsConstructor
@Entity
@SQLDelete(sql = "update column_info set deleted = 1 where id = ?")
@Where(clause = "deleted = 0")
public class ColumnInfo extends BaseEntity {
......
package com.tykj.workflowcore.model_layer.entity;
import com.tykj.workflowcore.base.entity.BaseEntity;
import com.tykj.workflowcore.model_layer.annotations.WorkFlowCoreNoScan;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;
import javax.persistence.Entity;
import javax.persistence.Lob;
/**
* @ClassName TableInfoEX
* @Description TODO 聚合对象
* @Author WWW
* @Date 2021/4/1 16:45
* @Version 1.0
*/
@WorkFlowCoreNoScan
@Data
@NoArgsConstructor
@Entity
@SQLDelete(sql = "update column_info set deleted = 1 where id = ?")
@Where(clause = "deleted = 0")
public class TableInfoEX extends BaseEntity {
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("主表id")
private Integer mainTableId;
@ApiModelProperty("附表id")
private Integer sideTableId;
@Lob
@ApiModelProperty("聚合对象xml")
private String xml;
@ApiModelProperty("聚合对象关系")
private Integer relationship;
@ApiModelProperty("连接属性")
private String connectionProperty;
@ApiModelProperty("连接key")
private String connectionKey;
}
package com.tykj.workflowcore.model_layer.myEnum;
/**
* @ClassName AggregationType
* @Description TODO
* @Author WWW
* @Date 2021/4/1 16:56
* @Version 1.0
*/
public class AggregationType {
public static final Integer ONE_TO_ONE=0;
public static final Integer ONE_TO_MANY=1;
public static final Integer MANY_TO_MANY=0;
}
package com.tykj.workflowcore.model_layer.service;
import com.tykj.workflowcore.model_layer.entity.TableInfoEX;
import org.springframework.stereotype.Service;
/**
* @ClassName Aggregation
* @Description TODO
* @Author WWW
* @Date 2021/4/1 17:08
* @Version 1.0
*/
@Service
public interface AggregationService {
void addAggregationOneToOne(TableInfoEX tableInfoEX);
}
package com.tykj.workflowcore.model_layer.service.impl;
import com.tykj.workflowcore.model_layer.dao.TableInfoDao;
import com.tykj.workflowcore.model_layer.dao.TableInfoExDao;
import com.tykj.workflowcore.model_layer.entity.TableInfo;
import com.tykj.workflowcore.model_layer.entity.TableInfoEX;
import com.tykj.workflowcore.model_layer.service.AggregationService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Optional;
/**
* @ClassName AggregationImpl
* @Description TODO
* @Author WWW
* @Date 2021/4/1 17:24
* @Version 1.0
*/
public class AggregationImpl implements AggregationService {
@Autowired
TableInfoDao tableInfoDao;
@Autowired
TableInfoExDao tableInfoExDao;
@Override
public void addAggregationOneToOne(TableInfoEX tableInfoEX) {
}
}
......@@ -11,7 +11,7 @@ import com.tykj.workflowcore.model_layer.entity.vo.*;
import com.tykj.workflowcore.model_layer.entity.*;
import com.tykj.workflowcore.model_layer.myEnum.ModelType;
import com.tykj.workflowcore.model_layer.service.ModelService;
import com.tykj.workflowcore.model_layer.utils.CreateTableUtil;
import com.tykj.workflowcore.model_layer.utils.SessionUtil;
import com.tykj.workflowcore.model_layer.utils.SqlUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -68,9 +68,6 @@ import static java.util.Objects.nonNull;
public class ModelImpl implements ModelService {
@Autowired
private EntityManagerFactory entityManagerFactory;
@Autowired
private TableInfoDao tableInfoDao;
......@@ -80,6 +77,9 @@ public class ModelImpl implements ModelService {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private SessionUtil sessionUtil;
/**
* @param
* @return java.util.List<com.tykj.workflowcore.model_layer.model.TableInfo>
......@@ -133,8 +133,11 @@ public class ModelImpl implements ModelService {
tableVO.setModelType(ModelType.BUSINESS);
}
CreateTableUtil creatTableUtil = new CreateTableUtil();
Session session = creatTableUtil.getSession(entityManagerFactory, xmlMapping);
sessionUtil.addXml(xmlMapping);
Session session = sessionUtil.getSession();
// CreateTableUtil creatTableUtil = new CreateTableUtil();
// Session session = creatTableUtil.getSession(entityManagerFactory, xmlMapping);
List<ColumnVO> dataList = tableVO.getDataList();
TableInfo tableInfo = new TableInfo();
......@@ -193,12 +196,12 @@ public class ModelImpl implements ModelService {
Object values = map.get(tableName);
if (values instanceof Map) {
//插入数据
insertValue(tableInfo.getModelName(), tableInfo.getXml(), (Map) values);
insertValue(tableInfo.getModelName(), (Map) values);
} else {
//循环插入数据
List valuesList = (List) values;
for (int i = 0; i < valuesList.size(); i++) {
insertValue(tableInfo.getModelName(), tableInfo.getXml(), (Map) valuesList.get(i));
insertValue(tableInfo.getModelName(), (Map) valuesList.get(i));
}
}
}
......@@ -212,16 +215,18 @@ public class ModelImpl implements ModelService {
/**
* @param tableName
* @param xml
* @param map
* @return void
* @Author WWW
* @Description 新增参数的方法
* @Date 16:17 2021/3/5
**/
public void insertValue(String tableName, String xml, Map map) {
CreateTableUtil createTableUtil = new CreateTableUtil();
Session newSession = createTableUtil.getSession(entityManagerFactory, xml);
public void insertValue(String tableName, Map map) {
// CreateTableUtil createTableUtil = new CreateTableUtil();
// Session newSession = createTableUtil.getSession(entityManagerFactory, xml);
Session newSession = sessionUtil.getSession();
SessionImpl session = (SessionImpl) newSession;
EntityPersister entityPersister = session.getEntityPersister(tableName, map);
Type[] propertyTypes = entityPersister.getPropertyTypes();
......
package com.tykj.workflowcore.model_layer.utils;
import liquibase.pro.packaged.E;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.util.List;
/**
* @ClassName AggregationUtil
* @Description TODO
* @Author WWW
* @Date 2021/4/1 18:59
* @Version 1.0
*/
public class AggregationUtil {
private static String xmlStart = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<!DOCTYPE hibernate-mapping PUBLIC\n" +
" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n" +
" \"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd\">\n" +
"<hibernate-mapping>";
private static String xmlEnd = "</hibernate-mapping>";
public static String getOldProperty(String xml) {
String property = "";
Document document = null;
try {
document = DocumentHelper.parseText(xml);
} catch (DocumentException e) {
e.printStackTrace();
}
List<Element> elements = document.getRootElement().elements().get(0).elements();
for (Element element : elements) {
property = property + element.asXML();
}
return property;
}
public static String addOneToOne(String field, String sideTableName, String xml) {
Element element = DocumentHelper.createElement("one-to-one");
element.addAttribute("name", field);
element.addAttribute("class", sideTableName);
element.addAttribute("cascade", "save-update");
Document document = null;
try {
document = DocumentHelper.parseText(xml);
} catch (DocumentException e) {
e.printStackTrace();
}
Element classElement = getNode(xml);
classElement.add(element);
return document.asXML();
}
public static String addOneToMany(String mainTable, String sideTable, String mainField, String xml) {
String addStr =
"<class entity-name= \"" +mainTable + "_" + sideTable + "\""+" table=\"" + mainTable +"\""+ ">\n" +
getOldProperty(xml) +
" <set name=\"" + sideTable + "_list" + "\""+" inverse=\"true\" lazy=\"true\">\n" +
" <key column=\"" + mainField + "\""+"/>\n" +
" <one-to-many class=\"" + sideTable +"\""+ "/>\n" +
"</set>\n" +
" </class>";
return xmlStart+ addStr+xmlEnd;
}
public static String addManyToMany(String mainTable, String sideTable, String xml) {
String entityName = mainTable + "_" + sideTable + "_ref";
String addStr = "<class entity-name=\"" + entityName +"\""+ " table=\"" + mainTable +"\""+ ">\n" +
" \n"
+
getOldProperty(xml)
+
" <set name=\"" + sideTable+"\"" + " table=\"" + entityName+"\"" + ">\n" +
" \t<key column=\"" + mainTable + "_id" +"\""+ "/>\n" +
" \t<many-to-many class=\"" + sideTable +"\""+ " column=\"" + sideTable +"\""+ "_id" + "/>\n" +
" </set>" +
"</class>";
return xmlStart+ addStr+xmlEnd;
}
public static Element getNode(String xml) {
Document document = null;
try {
document = DocumentHelper.parseText(xml);
} catch (DocumentException e) {
e.printStackTrace();
}
return document.getRootElement().elements().get(0);
}
}
......@@ -4,6 +4,7 @@ package com.tykj.workflowcore.model_layer.utils;
import com.tykj.workflowcore.base.result.ApiException;
import com.tykj.workflowcore.model_layer.entity.vo.ColumnVO;
import com.tykj.workflowcore.model_layer.entity.vo.TableVO;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.Metadata;
......@@ -42,7 +43,7 @@ public class CreateTableUtil {
for (ColumnVO columnVO : dataList) {
xmlMapping +=
" <property type=\"" + columnVO.getFieldType() + "\" name=\"" + columnVO.getFieldName() + "\" length=\"" + columnVO.getFieldLength()+
" <property type=\"" + columnVO.getFieldType() + "\" name=\"" + columnVO.getFieldName() + "\" length=\"" + columnVO.getFieldLength() +
"\" column=\"" + columnVO.getFieldName() + "\"/>\n";
}
......
package com.tykj.workflowcore.model_layer.utils;
import com.tykj.workflowcore.model_layer.dao.TableInfoDao;
import com.tykj.workflowcore.model_layer.entity.TableInfo;
import org.checkerframework.checker.units.qual.A;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.tool.hbm2ddl.SchemaUpdate;
import org.hibernate.tool.schema.TargetType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.persistence.EntityManagerFactory;
import java.io.ByteArrayInputStream;
import java.util.EnumSet;
import java.util.List;
/**
* @ClassName SessionUtil
* @Description TODO
* @Author WWW
* @Date 2021/4/1 10:08
* @Version 1.0
*/
@Component
public class SessionUtil {
SessionFactory sessionFactory;
StandardServiceRegistry serviceRegistry;
@Autowired
TableInfoDao tableInfoDao;
MetadataSources metadataSources;
public SessionUtil(EntityManagerFactory entityManagerFactory,TableInfoDao tableInfoDao){
this.tableInfoDao = tableInfoDao;
sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
serviceRegistry = sessionFactory.getSessionFactoryOptions().getServiceRegistry();
metadataSources = new MetadataSources(serviceRegistry);
sessionFactory.getSessionFactoryOptions();
init();
}
private void init(){
//去数据库读取所有的XML 加载到 metasource里
List<TableInfo> all = tableInfoDao.findAll();
for (TableInfo tableInfo : all) {
String xml = tableInfo.getXml();
addXml(xml);
}
}
public void addXml(String xmlStr){
metadataSources.addInputStream(new ByteArrayInputStream(xmlStr.getBytes()));
Metadata metadata = metadataSources.buildMetadata();
//更新数据库Schema,如果不存在就创建表,存在就更新字段,不会影响已有数据
SchemaUpdate schemaUpdate = new SchemaUpdate();
schemaUpdate.execute(EnumSet.of(TargetType.DATABASE), metadata, serviceRegistry);
}
public Session getSession(){
Metadata metadata = metadataSources.buildMetadata();
//创建会话工厂
SessionFactory newSessionFactory = metadata.buildSessionFactory();
//保存对象
return newSessionFactory.openSession();
}
}
......@@ -3,15 +3,23 @@ package com.tykj.workflowcore;
import com.tykj.workflowcore.model_layer.controller.ModelController;
import com.tykj.workflowcore.model_layer.dao.TableInfoDao;
import com.tykj.workflowcore.model_layer.entity.TableInfo;
import com.tykj.workflowcore.model_layer.entity.vo.TableAndColumnInfoVO;
import com.tykj.workflowcore.model_layer.myEnum.ModelType;
import com.tykj.workflowcore.model_layer.service.ModelService;
import com.tykj.workflowcore.model_layer.utils.AggregationUtil;
import com.tykj.workflowcore.model_layer.utils.SessionUtil;
import org.aspectj.lang.annotation.Before;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.internal.SessionImpl;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.query.NativeQuery;
import org.hibernate.query.Query;
import org.hibernate.tool.hbm2ddl.SchemaUpdate;
import org.hibernate.tool.schema.TargetType;
......@@ -24,15 +32,14 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.result.HandlerResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import javax.persistence.CascadeType;
import javax.persistence.EntityManagerFactory;
import java.io.ByteArrayInputStream;
import java.util.Arrays;
import java.util.EnumSet;
import java.util.List;
import java.util.Optional;
import java.util.*;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.not;
......@@ -66,6 +73,10 @@ class WorkflowCoreApplicationTests {
@Autowired
EntityManagerFactory entityManagerFactory;
@Autowired
SessionUtil sessionUtil;
@Before("")
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(modelController).build();
......@@ -211,7 +222,7 @@ class WorkflowCoreApplicationTests {
@Test
public void testDelTable() throws Exception {
request = delete("/model/delete/")
.param("id","5")
.param("id", "5")
.accept(MediaType.APPLICATION_JSON_UTF8_VALUE);
mockMvc.perform(request)
.andExpect(status().isOk())
......@@ -230,7 +241,7 @@ class WorkflowCoreApplicationTests {
System.out.println(all);
*/
String xml=
String xml =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<!DOCTYPE hibernate-mapping PUBLIC\n" +
" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n" +
......@@ -272,4 +283,187 @@ class WorkflowCoreApplicationTests {
}
@Test
public void testxml() {
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<!DOCTYPE hibernate-mapping PUBLIC\n" +
" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n" +
" \"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd\">\n" +
"<hibernate-mapping>\n" +
" <class entity-name=\"p_c\" table=\"people\">\n" +
" <id name=\"id\" type=\"java.lang.Integer\" length=\"11\" unsaved-value=\"null\">\n" +
" <generator class=\"identity\" />\n" +
" </id> <property type=\"java.lang.String\" name=\"name\" length=\"255\" column=\"name\"/>\n" +
" <property type=\"java.lang.String\" name=\"phone\" length=\"255\" column=\"phone\"/>\n" +
"\n" +
" <set name=\"carList\" cascade=\"save-update\">\n" +
" <key column=\"p_id\"/>\n" +
" <one-to-many class=\"car\"/>\n" +
"</set>\n" +
" </class>\n" +
"</hibernate-mapping>";
sessionUtil.addXml(xml);
Session session = sessionUtil.getSession();
HashMap hashMap = new HashMap();
HashMap carMap = new HashMap();
Set arrayList = new HashSet();
hashMap.put("name", "张三");
hashMap.put("phone", "李四");
carMap.put("name", "车1");
carMap.put("card", 1);
arrayList.add(carMap);
SessionImpl news= (SessionImpl) session;
hashMap.put("carList", arrayList);
session.save("p_c", hashMap);
session.getTransaction().begin();
session.getTransaction().commit();
// session.close();
Query from_p_c = session.createQuery("from p_c");
List list = from_p_c.list();
for (Object o : list) {
System.out.println(o);
}
System.out.println("1");
}
@Test
public void testOneToOne() {
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<!DOCTYPE hibernate-mapping PUBLIC\n" +
" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n" +
" \"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd\">\n" +
"<hibernate-mapping>\n" +
" <class entity-name=\"husband_wife\" table=\"wife\">\n" +
" <id name=\"id\" type=\"java.lang.Integer\" length=\"11\" unsaved-value=\"null\">\n" +
" <generator class=\"identity\" />\n" +
" </id> <property type=\"java.lang.String\" name=\"name\" length=\"255\" column=\"name\"/>\n" +
" <property type=\"java.lang.String\" name=\"age\" length=\"255\" column=\"age\"/>\n" +
" <one-to-one name=\"wife_id\" class=\"husband\" cascade=\"save-update\"/>\n" +
" </class>\n" +
"</hibernate-mapping>";
sessionUtil.addXml(xml);
Session session = sessionUtil.getSession();
Query query = session.createQuery("from husband_wife");
List list = query.list();
list.forEach(o -> System.out.println(o));
}
@Test
public void testManyToMany() {
String xml = "" +
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<!DOCTYPE hibernate-mapping PUBLIC\n" +
" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n" +
" \"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd\">\n" +
"<hibernate-mapping>\n" +
" <class entity-name=\"stu_teacher_ref\" table=\"stus\">\n" +
" <id name=\"id\" type=\"java.lang.Integer\" length=\"11\" unsaved-value=\"null\">\n" +
" <generator class=\"identity\" />\n" +
" </id> <property type=\"java.lang.String\" name=\"name\" length=\"255\" column=\"name\"/>\n" +
" <property type=\"java.lang.String\" name=\"age\" length=\"255\" column=\"age\"/>\n" +
" <property type=\"java.lang.String\" name=\"sex\" length=\"255\" column=\"sex\"/>\n" +
" <property type=\"java.lang.String\" name=\"laike\" length=\"255\" column=\"laike\"/>\n" +
" <set name=\"teacher\" table=\"stu_teacher_ref\">\n" +
" \t<key column=\"student_id\"/>\n" +
" \t<many-to-many class=\"teacher\" column=\"teacher_id\"/>\n" +
" </set>\n" +
"\n" +
" </class>\n" +
"</hibernate-mapping>";
sessionUtil.addXml(xml);
Session session = sessionUtil.getSession();
Query from_stus = session.createQuery("from stu_teacher_ref");
List list = from_stus.list();
System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
list.forEach(o -> System.out.println(o));
System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
}
@Test
public void tsetXMLOBJ() throws DocumentException {
String xml = "" +
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<!DOCTYPE hibernate-mapping PUBLIC\n" +
" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n" +
" \"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd\">\n" +
"<hibernate-mapping>\n" +
" <class entity-name=\"stu_teacher_ref\" table=\"stus\">\n" +
" <id name=\"id\" type=\"java.lang.Integer\" length=\"11\" unsaved-value=\"null\">\n" +
" <generator class=\"identity\" />\n" +
" </id> <property type=\"java.lang.String\" name=\"name\" length=\"255\" column=\"name\"/>\n" +
" <property type=\"java.lang.String\" name=\"age\" length=\"255\" column=\"age\"/>\n" +
" <property type=\"java.lang.String\" name=\"sex\" length=\"255\" column=\"sex\"/>\n" +
" <property type=\"java.lang.String\" name=\"laike\" length=\"255\" column=\"laike\"/>\n" +
" <set name=\"teacher\" table=\"stu_teacher_ref\">\n" +
" \t<key column=\"student_id\"/>\n" +
" \t<many-to-many class=\"teacher\" column=\"teacher_id\"/>\n" +
" </set>\n" +
"\n" +
" </class>\n" +
"</hibernate-mapping>";
//创建解析器
Document document = DocumentHelper.parseText(xml);
Element classMapping = document.getRootElement().elements().get(0);
String set=" <set name=\"teacher\" table=\"stu_teacher_ref\">\n" +
" \t<key column=\"student_id\"/>\n" +
" \t<many-to-many class=\"teacher\" column=\"teacher_id\"/>\n" +
" </set>\n";
classMapping.addElement(set);
System.out.println(classMapping);
Element id = classMapping.element("id");
System.out.println(id);
List<Element> elements = classMapping.elements("property");
for (Element element : elements) {
System.out.println(element);
}
}
@Test
public void testOldProperty() throws DocumentException {
TableInfo stus = tableInfoDao.findByModelName("stus");
String xml = stus.getXml();
Document document = DocumentHelper.parseText(xml);
List<Element> elements = document.getRootElement().elements().get(0).elements();
for (Element element : elements) {
System.out.println(element.asXML());
}
}
@Test
public void tsetCreateXml1(){
TableInfo wife = tableInfoDao.findByModelName("car");
// System.out.println(wife);
String s = AggregationUtil.addOneToOne("wife_id", "husband", wife.getXml());
System.out.println(s);
}
@Test
public void tsetCreateXml2(){
TableInfo people = tableInfoDao.findByModelName("people");
String xml = people.getXml();
String s = AggregationUtil.addOneToMany("people", "car", "p_id", xml);
System.out.println(s);
}
@Test
public void tsetCreateXml3(){
TableInfo teacher = tableInfoDao.findByModelName("teacher");
String xml = teacher.getXml();
String s = AggregationUtil.addManyToMany("teacher", "stus", xml);
System.out.println(s);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论