1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        monalisa-ormORM軟件

        聯(lián)合創(chuàng)作 · 2023-09-30 02:10

        monalisa-orm 的主要特點(diǎn): 

        • 一行代碼使用數(shù)據(jù)庫(kù)
        • SQL代碼自動(dòng)生成DTOs
        • 支持書(shū)寫(xiě)多行語(yǔ)法
        • 支持對(duì)象存儲(chǔ)
        • 支持分表分庫(kù)
        • 支持HTTP訪問(wèn)數(shù)據(jù)庫(kù)
        • 動(dòng)態(tài)加載SQL代碼

        更多用法參考https://github.com/11039850/monalisa-orm/wiki

        一行代碼引入數(shù)據(jù)庫(kù):

        @DB(url="jdbc:mysql://127.0.0.1:3306/test" ,username="root", password="root")

         

        SQL代碼自動(dòng)生成DTOs:

        /**
         * 數(shù)據(jù)訪問(wèn)類
         */
        public class UserBlogDao {
        	final static long $VERSION$= 18L; //!!! 版本號(hào), 每次保存為自動(dòng) +1
        	
        	//@Select 注解指示該方法需自動(dòng)生成結(jié)果類
        	//默認(rèn)類名: Result + 方法名, 默認(rèn)包名:數(shù)據(jù)訪問(wèn)類的包名+"."+數(shù)據(jù)訪問(wèn)類的名稱(小寫(xiě))
        	//可選參數(shù):name 指定生成結(jié)果類的名稱
        	@Select(name="test.result.UserBlogs") 
        	
        	//!!! 保存后會(huì)自動(dòng)修改該函數(shù)的返回值為: List -> List
        	//第一次編寫(xiě)時(shí),由于結(jié)果類還不存在, 為了保證能夠編譯正常,
        	//函數(shù)的返回值 和 查詢結(jié)果要用 泛值 替代, 保存后,插件會(huì)自動(dòng)修改.
        	//函數(shù)的返回值 和 查詢結(jié)果 泛值的對(duì)應(yīng)關(guān)系分三類如下:
        	//1. List查詢
        	//public DataTable   method_name(...){... return Query.getList();   } 或
        	//public List        method_name(...){... return Query.getList();   }    
        	//
        	//2. Page查詢
        	//public Page   method_name(...){... return Query.Page();      }
        	//
        	//3. 單條記錄
        	//public Object method_name(...){... return Query.getResult(); }
        	//
        	public List  selectUserBlogs(int user_id){ 
        		Query q=TestDB.DB.createQuery();
        		           
        		q.add(""/**~{
        				SELECT a.id,a.name,b.title, b.content,b.create_time
        					FROM user a, blog b   
        					WHERE a.id=b.user_id AND a.id=?
        		}*/, user_id);
        		 
        		//!!! 保存后會(huì)自動(dòng)修改 查詢結(jié)果為: getList() -> getList
        		return q.getList(); 
        	} 
        	
        	
        	@Select //自動(dòng)產(chǎn)生結(jié)果類: test.dao.userblogdao.ResultSelectUserBlogsOne
        	public Object  selectUserBlogsOne(int user_id){ 
        		Query q=TestDB.DB.createQuery();
        		           
        		q.add(""/**~{
        				SELECT a.id,a.name,b.title, b.content,b.create_time
        					FROM user a, blog b   
        					WHERE a.id=b.user_id AND a.id=?
        		}*/, user_id);
        		 
        		return q.getResult();
        	} 
        	
        }

        一些基本的數(shù)據(jù)庫(kù)操作:

        //insert
        new User().setName("zzg.zhou").setStatus(1).save();
        
        
        //parse data from type: Map, json/xml string, JsonObject(Gson)
        //, HttpServletRequest, JavaBean
        new User().parse("{'name':'oschina','status':0}").save();
        new User().parse(" china011 ").save();
        
        
        //select
        User.SELECT().selectByPrimaryKey(1);
        
        
        //SQL: SELECT * FROM `user` WHERE `name` = 'zzg.zhou'
        User.SELECT().selectOne("name=?", "zzg.zhou");
        
        
        //SQL: SELECT `name`, `status` FROM `user`
        User.SELECT().include("name","status").select();
         
        Page page=User.WHERE().name.like("zzg%").status.in(1,2,3)
                       .SELECT().selectPage(10,0);
        System.out.println(page.getTotalRow());
        
        
        //SQL: SELECT * FROM `user` WHERE `name` like 'zzg%' AND `status` IN(0, 1)
        for(User x:User.WHERE().name.like("zzg%").status.in(0, 1).SELECT().select()){
         System.out.println(x);
        }
         
        //SQL: SELECT * FROM `user` WHERE (`name` like 'zzg%' AND `status` >= 0) 
        //                             OR (`name` = 'zzg' AND `status` > 1) 
        //                          ORDER BY `status` ASC 
        for(User x:User.WHERE()
         .name.like("zzg%").status.ge(0)
         .OR()
         .name.eq("zzg").status.gt(1)
         .status.asc()
         .SELECT().select()){ //SELECT / delete / update
         System.out.println(x);
        }
        
        
         
        //general query
        TestDB.DB.select("SELECT * FROM user WHERE name like ?","zzg%");
        TestDB.DB.createQuery().add("SELECT * FROM user WHERE name like ?","zzg%")
          .getList(User.class);
         
        Query q=new Query(TestDB.DB);
        DataTable rs=q.add("SELECT * FROM user WHERE name like ?","zzg%")
         .add(" AND status ").in(1,2,3)
         .getList();
        for(User x:rs.as(User.class)){
         System.out.println(x);
        }
        
        //DataTable query
        //SQL: SELECT name, count(*) as cnt FROM _THIS_TABLE 
        //           WHERE status>=0 GROUP BY name ORDER BY name ASC
        DataTable newTable=
              rs.select("name, count(*) as cnt","status>=0","name ASC","GROUP BY name");
         
        
        //update
        User user=User.SELECT().selectOne("name=?", "zzg.zhou");
        user.setStatus(3).update();
        
        
        User updateTo=new User().setName("tsc9526");
        User.WHERE().name.like("zzg%").update(updateTo);
        
        
        
        
        //transaction
        Tx.execute(new Tx.Atom() {
         public int execute() {
         new User().setName("name001").setStatus(1).save();
         new User().setName("name002").setStatus(2).save();
         //... other database operation
         return 0;
         }
        });
         
        //Dynamic model: Record
        Record r=new Record("user").use(TestDB.DB);
        r.set("name", "jjyy").set("status",1)
         .save();
         
        //SQL: SELECT * FROM `user` WHERE (`name` like 'jjyy%' AND `status` >= 0)
        //                             OR (`name` = 'zzg' AND `status` > 1) 
        //                          ORDER BY `status` ASC 
        for(Record x:r.WHERE()
         .field("name").like("jjyy%").field("status").ge(0)
         .OR()
         .field("name").eq("zzg").field("status").gt(1)
         .field("status").asc()
         .SELECT().select()){
         System.out.println(x);
        } 
         
        //SQL: DELETE FROM `user` WHERE `name` like 'jjyy%' AND `status` >= 0
        r.WHERE()
         .field("name").like("jjyy%").field("status").ge(0)
         .delete();
          
        
        
        //delete
        user.delete();
        
        
        //SQL: DELETE FROM `user` WHERE `name`='china01'
        User.WHERE().name.eq("china01").delete();
        
        
        //User.DELETE().deleteAll();  
        
        

        支持Java多行字符串編輯:(插件下載

        更多用法參考https://github.com/11039850/monalisa-orm/wiki

        瀏覽 13
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            我和漂亮老师做爰9 | 欧美亚洲乱伦小说 | 国产—a毛—a毛A免费 | jizzjizz亚洲日本少妇 | 国产精品视频网站 | 51av视频 | 欧美做爱视频免费网站成人 | 动漫爽 又黄 免费视频 | 无遮挡边摸边吃奶边做视频免费 | 91小仙女jK白丝袜呻吟 |