1、新建学生表

这节课我们来把和数据库以及jdbc相关的内容完成,首先,进行数据库建表。数据库呢,我们采用MySQL数据库,我们可以通过navcat之类的管理工具来轻松建表。

首先,我们得建一个数据库,名字叫db_student。然后,开始建表:

表名为t_student,保存。

学生表建好之后,我们开始测试具体的增删改查操作。

2、自定义jdbc框架 simple-jdbc

如图所示,simple-jdbc是我自己编写的一个jdbc框架,有点类似于spring-jdbc,采用DBCP数据源。目录结构如图所示,我已经把它打成了一个jar包,只需要在项目中引入即可。接下来,我们需要配置一下数据库的链接信息。

我们新建一个源文件夹etc,里面写一个配置文件,名字叫dbcpconfig.properties.注意哦,一定是叫这个名字,因为我在simple-jdbc框架中就设置了默认去读取这个文件。

#连接设置

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://127.0.0.1:3306/db_student

username=root

password=123

#

initialSize=100

#最大连接数量

maxActive=50

#

maxIdle=200

#

minIdle=5

#

maxWait=60000

#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]

#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。

connectionProperties=useUnicode=true;characterEncoding=UTF8

#指定由连接池所创建的连接的自动提交(auto-commit)状态。

defaultAutoCommit=true

#driver default 指定由连接池所创建的连接的只读(read-only)状态。

#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)

defaultReadOnly=

#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。

#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE

defaultTransactionIsolation=READ_UNCOMMITTED

对应的源码:

static {

try {

InputStream e = DBCP_source.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");

Properties prop = new Properties();

prop.load(e);

ds = BasicDataSourceFactory.createDataSource(prop);

} catch (Exception arg1) {

throw new ExceptionInInitializerError(arg1);

}

}

3、新增用户

现在我们来测试新增用户的操作,建一个测试类:

因为我们使用了simple-jdbc,所以我们可以直接调用里面的save方法进行保存而不需要进行繁琐的jdbc操作。

在simple-jdbc中,有一个save方法,支持你传入一个map,然后把对应的数据保存到某个数据库的某一张表中。(MySQL)

案例:

public class TestAdd {

public static void main(String[] args) {

Map map = new HashMap();

map.put("id", "2018012101"); //学号

map.put("username", "zsf"); //账号

map.put("password", "123"); //密码

map.put("name", "张三丰"); //姓名

map.put("sex", "男"); //性别

SimpleDao dao = new SimpleDao();

dao.save("db_student", "t_student", map);

System.out.println("保存成功!");

}

}

让我们看一下这个方法:

dao.save("db_student", "t_student", map);

第一个参数是数据库名称,第二个参数是表名,第三个参数是载有数据的map。通过这个方法,我们不需要任何繁琐的jdbc语句,就能实现数据新增的操作!是不是很方便?

效果:

如果我们再次运行代码,就会报错:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '2018012101' for key 'PRIMARY'

因为id是主键,所以插入的时候是不允许重复的。

让我们多换几个数据测试一下,加几条数据:

3、删除用户

simple-jdbc没有直接删除数据的方法,但是支持用类似spring-jdbc的方式执行sql语句。比如:

public class TestDelete {

public static void main(String[] args) {

SimpleDao dao = new SimpleDao();

dao.update("delete from t_student where id = ?", 2018012102);

System.out.println("删除成功!");

}

}

效果:

4、修改用户

修改数据,simple-jdbc提供了非常好用的方法,先来看一个具体例子:

public class TestModify {

public static void main(String[] args) {

Map map = new HashMap();

map.put("id", "2018012103"); //学号

map.put("username", "gj"); //账号

map.put("password", "123456"); //密码

map.put("name", "郭靖"); //姓名

map.put("sex", "男"); //性别

SimpleDao dao = new SimpleDao();

dao.update("db_student", "t_student", map, "id");

System.out.println("修改成功!");

}

}

如代码所示,比如我要修改郭靖的数据,将其密码改为123456,就调用update方法。第一个参数是数据库名称,第二个参数是表名,第三个参数是载有数据的map,也就是修改后的数据。最后一个参数是主键,也就是说,根据什么字段信息来找到要修改的那一条数据?我们要修改郭靖的数据,id是一样的,都是2018012103,所以主键字段就是id,我们第四个参数就传一个“id”进去。

不需要任何繁琐的jdbc语句,你只需要一个map,搞定一切!

5、查询用户

查询用户我提供了多个接口:

1、queryForJsonObject

2、queryForJsonArray

3、queryForList

4、queryForMap

5、queryForBean

6、queryForString

7、queryForInt

8、queryForLong

9、queryForPage (分页数据)

每个方法看名字就知道是干什么用的了,这里我们就看一下其中最难的分页查询。分页查询在jdbc操作中一向是个难点,但是如果你使用我这个simple-jdbc框架,就是一句话的事情了。

例子:

public class TestQueryForPage {

public static void main(String[] args) {

String sql = "select * from t_student where 1=1 and sex = ?";

SimpleDao dao = new SimpleDao();

Map list = dao.queryForPage(sql, 1, 10, "男");

System.out.println(list);

}

}

如代码所示,我要查询出学生表中所有的男同胞,就用queryForPage方法,第一个参数是查询的sql语句,第二个参数是第几页,第三个参数是每页多少行,之后是一个变长数组,对应sql语句中的 ? 。

效果:

{

total=2,

rows=[{"id":2018012101,"sex":"男","username":"zsf","name":"张三丰","password":"123"},

{"id":2018012103,"sex":"男","username":"gj","name":"郭靖","password":"123456"}]

}

分页的结果集就是具体的列表加上总条数,于是乎,这样就实现了。

java 建表 框架_【Java框架型项目从入门到装逼】第九节 - 数据库建表和CRUD操作...相关推荐

  1. java easyui样式_【Java框架型项目从入门到装逼】第八节 - 用EasyUI绘制主界面

    1.引入资源包 在上一节中,我们把基本的框架都搭好了,用了Spring,SPringMVC.这一节,我们先来画页面,前端框架采用EasyUI来实现. easyui是一种基于jQuery的用户界面插件集 ...

  2. 【Java框架型项目从入门到装逼】第四节 - 编写第一个Servlet程序

    在开始这一节之前呢,我们还需要把Tomcat配置到Eclipse中,配置的方式很简单,打开Eclipse,Window,Preferences,进入到这个页面: 将Tomcat的安装目录配置到Ecli ...

  3. 【Java框架型项目从入门到装逼】第二节 - Spring框架 AOP的丧心病狂解说,你喜欢露娜的月下无限连吗?

    继续上一节的内容,多几个jar包: aop技术是面向切面编程思想,作为OOP的延续思想添加到企业开发中,用于弥补OOP开发过程中的缺陷而提出的编程思想.AOP底层也是面向对象:只不过面向的不是普通的O ...

  4. 【Java框架型项目从入门到装逼】第二节 - Spring框架 AOP的丧心病狂解说,你喜欢露娜的月下无限连吗?...

    继续上一节的内容,多几个jar包: aop技术是面向切面编程思想,作为OOP的延续思想添加到企业开发中,用于弥补OOP开发过程中的缺陷而提出的编程思想.AOP底层也是面向对象:只不过面向的不是普通的O ...

  5. selenium java框架_自动化测试框架selenium+java+TestNG——配置篇

    最近来总结下自动化测试 selenium的一些常用框架测试搭配,由简入繁,最简单的就是selenium+java+TestNG了,因为我用的是java,就只是总结下java了. TestNG在线安装: ...

  6. java实现计算器框架_[Java小程序] 实现简单计算器

    这学期没事学了一点点Java,想写个程序练手,因为只学了一点点,所以暂时只能先写个实现简单功能的计算器练练.感觉写完后不是很好,如果路过的哪位高手给点建议,小弟万分感激啊. 由于期末来了,没太多时间, ...

  7. java星际小战_首届中国星际战队联赛:TSG夺冠,小hero刘建宏大战惊天地泣鬼神...

    原标题:首届中国星际战队联赛:TSG夺冠,小hero刘建宏大战惊天地泣鬼神 导读:由SCboy主办的中国首届星际争霸战队联赛最终是以TSG战队惊险夺冠而落幕,总决赛的精彩程度令人始料未及. 半决赛,& ...

  8. 平台框架_从框架到平台

    平台框架 当我在十年前以Java开发人员的身份开始职业生涯时,该行业正经历着革命性的变化. 2003年发布的Spring框架Swift流行,并成为庞大的J2EE平台的严重挑战者. 经过过渡时间后,我很 ...

  9. Java并发编程实战_[Java并发编程实战] 简介

    并发简史 在早期不包含操作系统的计算机中,程序都是单一的串行程序,从头至尾只能执行一个程序,并且这个程序访问这个计算机的所有资源.然而,随着技术的发展,操作系统出现了.它使得计算机程序有了进程,线程的 ...

最新文章

  1. 联想办公计算机,办公娱乐两不误!联想这些笔记本电脑不容错过
  2. 784. Letter Case Permutation
  3. Leetcode每日一题:66.plus-one(加一)
  4. java split 坑
  5. “21天好习惯”第一期-6
  6. 动态SLIC加载(DBSLDR)激活win7
  7. 芝麻开门-如何解决电脑PIN码忘记了不能登录问题
  8. 怎么用命令提示符打开浏览器_从您当前的命令提示符/终端目录打开文件浏览器...
  9. JPA自动生成数据库表教程
  10. 打开计算机不显示硬盘盘符,电脑硬盘不显示盘符怎么办 移动硬盘不显示盘符的原因...
  11. Debugging connection was closed. Reason: WebSocket disconnected
  12. 初中计算机数学,初中数学
  13. python足球联赛赛程_足球联赛赛程表生成
  14. 2020第十一届蓝桥杯C/C++国赛B组
  15. 镭速发布文件直传新功能,实现端到端快速传输
  16. win10下QT5.11.1静态编译(带MYSQL)
  17. 【腾宇】postinstall-postinstall配合patch-package重写node_modules的依赖方法
  18. Cadence 电路仿真宝典【目录】
  19. 基于C语言开发Linux平台的协议分析软件
  20. 广和通l610二次开发|广和通l610 CAT.1模组opencpu开发《二》cola_os移植

热门文章

  1. 更改centos epel源
  2. 《XXX重大技术需求征集系统》的可用性和可修改性战术分析
  3. [2017.02.07] Lua入门学习记录
  4. MySQL中的datetime与timestamp比较
  5. FTP 1 协议分析
  6. Android多线程操作——线程池管理综述
  7. Android ListView 疯狂之旅 之 《自定义下拉刷新功能的ListView》
  8. 安卓监听软键盘搜索键
  9. WPF 虚拟化 VirtualizingWrapPanel 和 VirtualLizingTilePanel
  10. jquery.cookie中的操作