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 #<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
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<String, Object> 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框架型项目从入门到装逼】第九节 - 数据库建表和CRUD操作的更多相关文章

  1. 【Java框架型项目从入门到装逼】第七节 - 学生管理系统项目搭建

    本次的教程是打算用Spring,SpringMVC以及传统的jdbc技术来制作一个简单的增删改查项目,对用户信息进行增删改查,就这么简单. 1.新建项目 首先,打开eclipse,新建一个web项目. ...

  2. 【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说

    大家好,好久不见,今天我们来一起学习一下关于Spring框架的IOC技术. 控制反转--Spring通过一种称作控制反转(IoC)的技术促进了松耦合.当应用了IoC,一个对象依赖的其它对象会通过被动的 ...

  3. 【Java框架型项目从入门到装逼】第五节 - 在Servlet中接收和返回数据

    在上一节的程序中,我们可以看到HttpServletRequest, HttpServletResponse这两个对象.可以说,这是JavaWeb中至关重要的两个对象.接下来,我们来做一个简短的说明: ...

  4. 【Java框架型项目从入门到装逼】第十二节 项目分层

    这一节我们开始对项目进行分层,一般来说,一个web项目的层次结构如下图所示: controller层为我们的控制层,用来接收用户的请求,比如新增一个学生的信息,新增的请求最先就是走到这一层.contr ...

  5. 【Java框架型项目从入门到装逼】第三节 - 如何用Tomcat发布web项目?

    啥叫Tomcat?有道词典是这么说的. 这个我们姑且不管,实际上呢,Tomcat是一种Web服务器,我们自己做好了一个Web项目,就可以通过Tomcat来发布.服务器呢,又分为硬件服务器和软件服务器. ...

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

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

  7. 【Java框架型项目从入门到装逼】第十四节 查询用户列表展现到页面

    这一节,我们来实现一下用户列表搜索,最终的效果如下: 这边我们要使用easyUI给我们提供的datagrid组件. HTML结构如下 <!-- 数据列表 --> <table id= ...

  8. 【Java框架型项目从入门到装逼】第八节 - 用EasyUI绘制主界面

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

  9. 【Java框架型项目从入门到装逼】第十三节 用户新增功能完结篇

    这一节,我们把用户新增的功能继续做一个完善.首先,新增成功后,需要给前台返回一个信息,就是告诉浏览器,这次用户新增的操作到底是成功了呢,还是失败了呢?为此,我们需要专门引入一个结果类,里面只有两个属性 ...

随机推荐

  1. windows c++ 错误汇总

    1.fatal error C1900 错误:fatal error C1900: “P1”(第“20081201”版)和“P2”(第“20080116”版)之间 Il 不匹配 检查之后发现jepgl ...

  2. java juint框架的windows自动化-自动运行juint程序简述

    在京东混了一个月,基本有点稳定了,觉得也有所余力了现在,继续写博客吧,不过以后更新也许不是那么频繁了 本人使用的是juint框架,对开发是一个单元测试的java框架,但是对测试而言是java的基石之一 ...

  3. Pyhon学习_04_字典、集合

    字典.集合两种基本类型都是通过映射的方式访问. 字典 python中的字典和perl中的哈希是很相似的,包括其重要的几条属性: 1. 键值必须是唯一的 2. 键值必须是可哈希的,也就是键值不能够是可变 ...

  4. SEO之网站关键词的优化 :首页,内页关键字,长尾关键字

    这篇文章主要讲的是SEO之网站关键词的优化 :首页,内页关键字,长尾关键字. 为了查找方便,小A汇总了所有SEO优化的相关教程,方便大家查找到自己想要的SEO优化技巧: SEO优化教程汇总. 网站关键 ...

  5. [Spark内核] 第40课:CacheManager彻底解密:CacheManager运行原理流程图和源码详解

    本课主题 CacheManager 运行原理图 CacheManager 源码解析 CacheManager 运行原理图 [下图是CacheManager的运行原理图] 首先 RDD 是通过 iter ...

  6. linux centos下安装dokuwiki

    首先先大致介绍一下wiki: DokuWiki是一个开源wiki引擎程序,运行于PHP环境下.Doku Wiki 程序小巧而功能强大.灵活,适合中小团队和个人网站知识库的管理. DokuWiki可以与 ...

  7. bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)-VMware下三种网络配置方式

    VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1 ...

  8. centos6.x升级protobuf操作流程.

    1.首先卸载protobuf,使用命令如下: sudo yum remove protobuf 2.下载protobuf源,依据自己的需要下载: 2.1下载地址:https://github.com/ ...

  9. 渗透测试入门DVWA 教程1:环境搭建

    首先欢迎新萌入坑.哈哈.你可能抱着好奇心或者疑问.DVWA 是个啥? DVWA是一款渗透测试的演练系统,在圈子里是很出名的.如果你需要入门,并且找不到合适的靶机,那我就推荐你用DVWA. 我们通常将演 ...

  10. XOR算法的原理和实现

    XOR算法的原理和实现 XOR算法这种方法的原理 当一个数A和另一个数B进行异或运算会生成另一个数C,如果再将C和B进行异或运算则C又会还原为A. 相对于其他的简易加密算法,XOR算法的优点如下. ( ...