文档章节

根据java类生成对应的sql语句

GreyWord
 GreyWord
发布于 2017/01/10 19:20
字数 543
阅读 15
收藏 0
MVC

MVC设计模式的情况下,M和V是分离的,在分别维护的情况下,有可能会造成前后台字段不一致的问题。

那么,能不能由C来读取M的参数,并自动化修改V的骨架呢?血肉的部分,可以通过JS和CSS来微调。

也就是说,更改M就会更改V的骨架结构而不需要对应修改C的内容,仅需要更改M就会让V展现出完全不同的内容。

也就是说,让多个M共用一套C和V却不会互相冲突。

根据一个类生成SELECT语句是很简单的,select * from 类名;复杂一点的话,SELECT FIELDLIST FROM 类名也可以通过反射生成。

那么,如果涉及双表联查,如何在仅更改M不更改C的情况下实现呢?实现一个接口?不好,我们不能确定是否仅有一个字段涉及联查,也不确定数据库字段被更改的情况下没有遗漏。继承父类?不好,我们同样无法保证联查信息的即时更新和指定字段的精确性。

那么,考虑使用注解。对联查的字段加注解,注解指向扩展表的代表类,当数据库更改时,只需要更改代表类一处,不存在遗漏的问题,也不存在信息递交效率的问题。联查的字段及字段注解的指向类成为了双表联查的纽带,而且注解是针对特定字段,不同字段注解的增加与删除不会发生冲突。

Class A_table{    Integer id;    @(foreign = B_table .class) Integer bid;    }

Class B_table{    Integer id    }

可以自动形成select * from A_table left join B_table on A_table.bid=B_table.id语句。

但是,如果想自动形成 select A_table.FIELDLIST,B_table.FIELDLIST from A_table left join B_table on A_table.bid=B_table.id的语句,要如何实现呢?

可以考虑,扩展注解。

Class A_table{   

    Integer id;    

    @(foreign = B_table .class, key = "key") Integer bid;   

    @(foreign = B_table .class, key = "value") Integer bname;    

}

这样可以区分出基础表字段,纽带,扩展表字段,也就实现了基础的联查。

© 著作权归作者所有

GreyWord
粉丝 0
博文 1
码字总数 543
作品 0
海淀
后端工程师
私信 提问
sharding-jdbc分库分表规则(1)-单表查询

前言 当数据量到达一定数量级的时候,一般都会考虑分库分表。sharding-jdbc是一个开源的客户端分库分表基础类库,以一个jar包的形式提供,基于原生的JDBC驱动进行增强,基本能够无缝整合旧代...

xiaomin0322
2018/06/07
1K
0
理解 pureQuery:IBM 最新的 Java 数据库应用编程范例

pureQuery 项目为数据库应用开发人员提供了一套基于 GUI 且易用的方法,它能够显著提高应用程序的设计和实现阶段的生产效率。通过将关系数据自动转换为 Java 对象的实现方式,方便了用户对数...

红薯
2008/12/15
460
0
(二)MyBatis核心组件(配图详解&代码实现)

MyBatis的核心组件分为4个部分 SqlSessionFactoryBuilder(构造器):根据xml或java代码生成SqlSessionFactory。 SqlSessionFactory(工厂接口):使用它生成Sqlsession,工厂模式下生成。 ...

青衣煮茶
2018/07/27
0
0
通过JDBC进行简单的增删改查(以MySQL为例)

前言:什么是JDBC 一、准备工作(一):MySQL安装配置和基础学习 二、准备工作(二):下载数据库对应的jar包并导入 三、JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4...

Airship
2015/07/13
406
0
JAVA持久层框架的概述(ibatis>>mybatis)

现在主流的ORM映射框架有Hibernate、Apache OJB;这些基于Java的持久层框架都提供了全自动的对象–关系映射机制,能很好的实现从对象到关系数据的持久化操作。几乎不需要写任何的SQL语句(根据...

battier
2011/06/21
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
昨天
6
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
昨天
2.5K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
昨天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部