Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

weizhonzhen/org.FastData.Spring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

390 Commits

Repository files navigation

org.FastData.Spring

java orm(db first,code frist) for sqlserver mysql etl.

in Application add Annotation

 //service aop
 @FastServiceAop(aopType = emr.doctor.Handler.FastServiceAop.class) 
 @FastData(key = "test",cachePackageName = "com.example.Entity" ,
 codeFirstPackageName="com.example.Entity", servicePackageName = "com.example.Service",aopType=FastDataAop.class)
 key is database key 
 codeFirstPackageName is code first model
 cachePackageName is cache model
 servicePackageName is interface Service

aop

//fastdata aop
public class FastDataAop implements IFastDataAop {
 @Override
 public void before(BeforeContext beforeContext) {
 System.out.println("before:" + beforeContext.getSql());
 }
 @Override
 public void after(AfterContext afterContext) {
 System.out.println("after:" + afterContext.getSql());
 }
 @Override
 public void mapBefore(MapBeforeContext mapBeforeContext) {
 System.out.println("mapBefore:" + mapBeforeContext.getMapName());
 }
 @Override
 public void mapAfter(MapAfterContext mapAfterContext) {
 System.out.println("mapAfter:" + mapAfterContext.getMapName());
 }
 @Override
 public void exception(ExceptionContext exceptionContext) {
 System.out.println("exception:" + exceptionContext.getName());
 }
}
//service aop
public class FastServiceAop implements IFastServiceAop {
 @Override
 public void before(BeforeContext beforeContext) { 
 beforeContext.setReturn(true);
 beforeContext.setResult("test");
 }
 @Override
 public void after(AfterContext afterContext) {
 afterContext.setResult("test");
 }
 @Override
 public void exception(ExceptionContext exceptionContext) {
 afterContext.setResult("test");
 }
}
//service aop
public interface IUserService {}
public class UserService implements IUserService{}
IUserService userService = (IUserService)new FastServiceProxy().invoke(UserService.class);

Annotation

public interface TestService {
 @FastRead(sql = "select * from base_user where id=?id and orgid=?orgid",dbKey = "test")
 Map<String,Object> map(String id,String orgid);
 //Map<String,Object> map(base_user model);
 //Map<String,Object> map(Map<String,Object> map);
 @FastRead(sql = "select * from base_user where id=?id and orgid=?orgid",dbKey = "test")
 TestTable model(String id,String orgid);
 // or TestTable map(base_user model);
 // or TestTable map(Map<String,Object> map);
 @FastRead(sql = "select * from base_user where id=?id and orgid=?orgid",dbKey = "test")
 List<Map<String,Object>> listMap(StringidGH,String orgid);
 // or List<Map<String,Object>> listMap(base_user model);
 // or List<Map<String,Object>> listMap(Map<String,Object> map);
 @FastRead(sql = "select * from base_user where id=?id and orgid=?orgid",dbKey = "test")
 List<TestTable> listModel(String id,String orgid);
 // or List<TestTable> listModel(base_user model);
 // or List<TestTable> listModel(Map<String,Object> map);
 @FastWrite(sql = "update base_user set name=?name where id=?id",dbKey = "test")
 WriteReturn update(String name,String id);
 // or WriteReturn update(base_user model);
 // or WriteReturn update(Map<String,Object> map);
 
 @FastRead(sql = "select * from base_user where id=?id and orgid=?orgid",dbKey = "test",isPage = true,pageType = TestTable.class)
 PageResultImpl page1(PageModel pageModel, Map<String,Object> map);
 
 @FastRead(sql = "select * from base_user where id=?id and orgid=?orgid",dbKey = "test",isPage = true)
 PageResult page2(PageModel pageModel, Map<String,Object> map);
 
 FastXml(dbKey = "test", xml = {"<select>select a.DNAME, a.GH, a.DID from TestResult a where rownum &lt;= 15",
 "<dynamic prepend=' '>",
 "<isNotNullOrEmpty prepend=' and ' property='userName'>userName=?userName'</isNotNullOrEmpty>",
 "<isNotNullOrEmpty prepend=' and ' property='userId'>userId=?userId</isNotNullOrEmpty>",
 "</dynamic>",
 "order by a.REGISTDATE</select>"},isPage =true)
 PageResult read_MapPage(PageModel page ,Map<String, Object> item);
 
 @FastXml(dbKey = "test", xml = {"<select>select a.DNAME, a.GH, a.DID from TestResult a where rownum &lt;= 15",
 "<dynamic prepend=' '>",
 "<isNotNullOrEmpty prepend=' and ' property='userName'>userName=?userName'</isNotNullOrEmpty>",
 "<isNotNullOrEmpty prepend=' and ' property='userId'>userId=?userId</isNotNullOrEmpty>",
 "</dynamic>",
 "order by a.REGISTDATE</select>"})
 List<TestResult> read_Map(Map<String, Object> item);
}
@Resource
TestService test;
//or
var test = (TestService) iFastRepository.resolve(TestService.class, AppSeting.Key);
var param =new HashMap<String,Object>();
param.put("gh","admin");
param.put("kid",101);
var page=new PageModel();
page.setPageSize(10);
var model = test.model("admin", "101");
var map = test.map("amdin", "101");
var listMap = test.listMap("admin", "101");
var listModel = test.listModel("admin", "101");
var update = test.update("管理员", "admin", "101");
var page1 = (PageResultImpl<TestTable>)test.page1(page,param);
var page2 = test.page2(page,param);
var pageMap1 = test.read_MapPage(page,model); 
var pageMap2 = test.read_Map(model);

code first model package Entity;

import Column;
import Table;
@Table(comments = "测试")
@FieldNameConstants
@Data
public class TestTable {
 @Column(isKey = true,dataType = "NVARCHAR2",length = 15,isNull = true,comments = "id")
 private String Id;
 @Column(dataType = "NUMBER",isNull = true,comments = "value")
 private Number value;
 
 @NavigateType(type = TestTable_List.class,isAdd = true,isDelete = true,isUpdate = true) //add,update by PrimaryKey,delete by PrimaryKey
 private TestTable_List list;
}
@Data
public class TestTable_List
{
 @Navigate(Name = TestTable.Fields.Id)
 private String Id;
 private Number value;
}
//@NavigateType @Navigate 导航属性
 var model = new TestTable();
 model.setId("1");
 var list = (TestTable)ifast.queryKey(model,TestTable.class,"db");
 ifast.add(model,"db");//add table TestTable and TestTable_List
 ifast.updateKey(model,"db"); //update by key table TestTable and TestTable_List
 ifast.deleteKey(model,"db"); //delete by key table TestTable and TestTable_List

in resources add db.json in db.json

 { 
 "dataConfig": [
 {
 "providerName": "oracle.jdbc.OracleDriver",
 "dbType": "Oracle",
 "user": "user",
 "passWord": "pwd",
 "connStr": "jdbc:oracle:thin:@127.0.0.1/data",
 "isOutSql": true,
 "isOutError": true,
 "key": "test",
 "designModel": "CodeFirst",
 "poolSize":50
 }
 ]
}

in resources add map.json

"SqlMap" :{"Path": [ "map/admin/Api.xml", "map/admin/Area.xml"]}

in resources add map/admin/Api.xml map/admin/Area.xml

 <?xml version="1.0" encoding="utf-8" ?>
 <sqlMap>
 <select id="GetUser" log="true" db="test">
 select a.* from base_user a
 <dynamic prepend=" where 1=1">
 <isPropertyAvailable prepend=" and " property="userId">a.userId=?userId</isPropertyAvailable> 
 <isNotNullOrEmpty prepend=" and " property="isAdmin">a.isAdmin=?isAdmin</isNotNullOrEmpty>
 <if condition="areaId>8" prepend=" and " property="areaId">a.areaId=?areaId</if> 
 <choose property="userNo">
 <condition prepend=" and " property="userNo>5">a.userNo=?userNo and a.userNo=5</condition> 
 <condition prepend=" and " property="userNo>6">a.userNo=?userNo and a.userNo=6</condition>
 <other prepend=" and ">a.userNo=?userNo and a.userNo=7</other>
 </choose> 
 </dynamic>
 </select>
 
 <update id="test.Update">
 update base_user set
 <dynamic ltrim="," prepend =" ">
 <isNotNullOrEmpty prepend=" " property="Name">,name=?Name</isNotNullOrEmpty>
 <isNotNullOrEmpty prepend=" " property="Age">,age=?Age</isNotNullOrEmpty>
 <isNotNullOrEmpty prepend=" " property="Id" required="true">where id=?id</isNotNullOrEmpty>
 </dynamic>
 </update>
 </sqlMap>
 
in Interceptor
@Resource	
private org.FastData.Spring.Handler.FastApiInterceptor fastApiInterceptor;
registry.addInterceptor(this.fastApiInterceptor) is dyn http api 
 
http://127.0.0.1:8080/GetUser?userId=1

in Controller

 @Resource
 IFastRepository iFast;
//database write sql param must ?name,dtabase read sql param only ?
 try (var db = new DataContext("db")) {
 var query = new HashMap<String, Object>();
 query.put("Id", "00010162");
 query.put("Name", "中1国");
 var data1 = ifast.queryMap("TestTable.info", query, db);
 var data2 = ifast.queryMap("table.info", query, TestTable.class, db);
 var pmodel = new PageModel();
 var pageList1 = ifast.pageMap(pmodel, "TestTable.info", query, db);
 var pageList2 = ifast.pageMap(pmodel, "TestTable.info", query, TestTable.class, db);
 var count = ifast.read(BASE_USER.class)).eq(BASE_USER::getORGID,1224).orderBy(BASE_USER::getORGID,true).toCount("db");
 var item = ifast.read(BASE_USER.class)).eq(BASE_USER::getORGID,1224).orderBy(BASE_USER::getORGID,true).toItem("db");
 var list = ifast.read(BASE_USER.class)).eq(BASE_USER::getORGID,1224).orderBy(BASE_USER::getORGID,true).toList("db");
 var page = ifast.read(BASE_USER.class)).eq(BASE_USER::getORGID,1224).orderBy(BASE_USER::getORGID,true).toPage(pmodel,"db"); 
 var update = ifast.write(BASE_USER.class)).eq(BASE_USER::getORGID,1224).set(BASE_USER::getORGID,111).toUpdate("db");
 var delete = ifast.write(BASE_USER.class)).eq(BASE_USER::getORGID,1224).toDelete("db");
 var field = new ArrayList<String>();
 field.add("Value");
 var update = ifast.updateKey(model, field, db);
 var del = ifast.deleteKey(model, db);
 
 db.beginTrans();
 db.submitTrans();
 db.rollbackTrans();
 }

About

orm(db first,code frist) for sqlserver mysql etl.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /