在(上)https://zhuanlan.zhihu.com/p/113923496中介绍了什么是JDBC,JDBC的作用,还有他是如何连接数据库的。这里就对数据最基本最简单的增删改查的操作进行陈述,废话不多说,来吧!
这一节呢,我们对数据库s-c下的j表进行增删改查(默认是知道数据库的操作咯)
![b012e5e742f78c522bf53298553709ea.png](https://i-blog.csdnimg.cn/blog_migrate/3ff732e89bcc0092be3a4d2eff51df2d.png)
接下来我们来看看表的属性,一共就3个属性:
![ac4b5671621d17e8cba8c237f44158fa.png](https://i-blog.csdnimg.cn/blog_migrate/be1c31c0d9174941054a6a48b88e4c90.png)
然后我们来说说java这边。先给大家看一下项目的结构:
![cd34095d26e48f6fae4c86f35190ff4b.png](https://i-blog.csdnimg.cn/blog_migrate/53c6c9c0609464e73d3d7d922df6e312.png)
看得出来每一个包做什么是非常明晰的。这里简单说一下MVC(Model-View-Controller),mvc是一种架构模式,程序分层,分工合作,既相互独立又协同合作。它有3个基本部分:模型层,控制层,视图层。
模型层(Model):通常是多个业务实体类的组合
控制层(Controller):调用业务逻辑产生合适的数据,传递数据给视图用于呈现
视图层(View):为用户提供界面。
就好比什么呢?有一个大型加工厂,一共有3个车间,第一个车间是原料区也就是我们的Model层,里面有很多的java类,涉及到了各个实体的属性。第二个车间就是对原料进行加工,也就是我们的控制层,对数据进行操作(增删改查之类的)。将加工后的产品就放在展览区进行展览,也就是我们的视图层,将处理后的数据放到视图层进行呈现。
这个项目就是采用的MVC架构(迷你版~)。第一步肯定是连接数据库,也就是我们的DBUtil这个工具类,在(上)中详细讲过,这里也就不讲了,不知道的小伙伴们可以去看看:
对于mvc架构,有的人喜欢按照这样的顺序写:模型层---控制层---视图层。好滴,我就是这样的有的人(哈哈哈)。也有的喜欢先写视图层,这个就看个人吧,反正写好算事。
模型层:
![4c64b54815349093127ef238044c798c.png](https://i-blog.csdnimg.cn/blog_migrate/8f13cccb61239292e950c95584e51fa9.png)
它的数据类型是根据j表的字段进行创建的。然后写对应的get,set方法,有一个快捷的方法。就是右键点击空白处---source---生成Getter和Setter,一键生成。
![f794177723035d1c4c7244046d60ae70.png](https://i-blog.csdnimg.cn/blog_migrate/c6471ff015bba7be38b671895e4e0e47.png)
重写toString()方法:
![f8a63e821e96cab6991a938c735ee868.png](https://i-blog.csdnimg.cn/blog_migrate/99acfd6e5dd4a9f865068ee3b9a51e66.png)
也可以按照上面说的直接生成:右键点击空白处---source---生成toString().
再分别写一个无参和带参构造函数:
![9bd45dac05fe38503dd7b31b94a9511b.png](https://i-blog.csdnimg.cn/blog_migrate/6a1276f70f88af97d9ea8b797154f8e3.png)
所以,总结一下,模型层主要写这么几个东西,当然格式不是固定的,根据实际需要可能会有其他的函数等:
- 数据
- get和set方法
- 构造函数
- toString()方法
控制层:
就是写对数据是如何进行操作的,这里只写了最基本的增删改查操作:
![b00997468da70f755f2770c99441d955.png](https://i-blog.csdnimg.cn/blog_migrate/8af98524eadfeb2c0a22f060142dcab8.jpeg)
![3d468724a763ef858ae4b68798df369e.png](https://i-blog.csdnimg.cn/blog_migrate/68521b54fc87fae0c1e51c889edda996.jpeg)
这里要重点说一下,数字是几就对应第几个问号。不管是setInt还是setString都需要与?对应的数据类型对应起来,比如说第一个问好是JNO,他的数据类型是int,所以就应该是setInt.
![6ab10edd81811852952215379058bc4e.png](https://i-blog.csdnimg.cn/blog_migrate/4ea829a38468fcaf1c68aa293f8f9fe3.png)
![f4f186b75fd1295d1fb3f74c335029cf.png](https://i-blog.csdnimg.cn/blog_migrate/7cb57d9e477b67a35c7c7a0d4151776f.jpeg)
![37cacaeb39f3f8a3d66ef8e2ac1fe2cc.png](https://i-blog.csdnimg.cn/blog_migrate/61d566930c571bd648f605a19d3a46c4.jpeg)
这就是增删改查的具体实现。有几点需要注意,虽然我在select方法中,sql语句写的是select from j. 写 主要是图方便,但是呢,在实际开发的时候最好写全列名也就是 select JNO,JNAME,CITY from j,因为写*的话,系统内部还有一个将他全部翻译成列名的步骤,效率就会降低。另外再说一下PreparedStatement的execute方法和executeQuery方法。
execute():执行sql语句,该语句可以是任何种类的sql语句。返回boolean.
executeQuery():执行sql查询,并返回查询生成的结果,也就是ResultSet对象。
最后是视图层,视图层就根据自己的想法将结果显示出来就好来了。没有什么特别需要说明的。看下最终的效果吧:
![2341531846ae621edee7b78ef89dba94.png](https://i-blog.csdnimg.cn/blog_migrate/482ede5bcf946bc53053debe3c9648d1.jpeg)
![b0217e843ef918b3c30e370b7581c4a7.png](https://i-blog.csdnimg.cn/blog_migrate/946e6fbbbee70778d6d9229751177897.jpeg)
![12c9d66a4560958a6f42a62f4b20e383.png](https://i-blog.csdnimg.cn/blog_migrate/28940c7c345ef66c725b4c56bee9d906.jpeg)
![42f7f1f6b8f4cf496e699c6214bddf93.png](https://i-blog.csdnimg.cn/blog_migrate/9e8909e7222561f6b9a9fc9f8303a48a.jpeg)
说明几点:
- 这里对数据库的操作使用的语句就比较简单只是对一张表进行操作(就像是小样),还没有涉及到多表的关联等,还有一些高级搜索where,group by等都没有涉及到。大家可以举一反三自己尝试一下。
- 代码和表已经上传至网盘,可自行查看
链接:https://pan.baidu.com/s/1nlVZNLC8VE5IIO7IVg-DEg
提取码:nvmn
链接:https://pan.baidu.com/s/12KWbP8AY9Nne0wddPsKebQ
提取码:fbjb
- 不清楚如何连接数据库的可以先查看这篇文章: