1、新建学生表

这节课咱们来把和数据库以及jdbc相关的内容完结,首要,进行数据库建表。数据库呢,咱们选用MySQL数据库Java结构从入门到装逼, 数据库建表和CRUD操作,咱们能够经过navcat之类的管理工具来轻松建表。

首要,咱们得建一个数据库,姓名叫db_student。然后,开端建表:

表名为t_student,保存。

学生表建好之后,咱们开端测验详细的增修正查操作。

2、自定义jdbc结构 simple-jdbc

如图Java结构从入门到装逼, 数据库建表和CRUD操作所示,simple-jdbc是我自己编写的一个jdbc结构,有点相似于spring-jdbc,选用DBCP数据源。目录结构如图所示,我现已把它打成了一个jar包,只需求在项目中引进即可。接下来,咱们需求装备一下数据库的链接信息。

咱们新建一个源文件夹etc,里边写一个装备文件,姓名叫dbcpconfig.properties.留意哦,一定是叫这个姓名,由于我在simple-jdbc结构中就设置了默许去读取这个文件。

#衔接设置天籁天个人资料
driverClassName=com.mysql.jdbc.Driver
url=jdbc:m万法掌柜ysql://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" 两个特点会被明Java结构从入门到装逼, 数据库建表和CRUD操作确地传递,因而这儿不需求包括他们。
connectionProperties=useUnicode=true;characterEncoding=UTF8
#指定由衔接池所创立的衔接的主动提交(auto-commit)状况。
defaultAutoCommit=true
#driver default 指定由衔接池所创立的衔接的只读(read-only)状况。
#假如没有设置该值,则“setReadOn荼荻ly”办法将不被调用。(某些驱动并不支撑只读形式,如: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) {
Ma中联办李刚p map = new HashMap();
map.put("id", "2018012101"); //学号
map.put("username", "zsf"); //账号
map.put("passJava结构从入门到装逼, 数据库建表和CRUD操作word", "123"); //暗码
map.put("name", "张三丰"); //姓名
map.put("sex", "男"); //性别
SimpleDao dao = new SimpleDao();
dao.save("db_studen庐剧大全昂小红悲惨剧t", "t_student", map);
System.out.println("保存成功!方炳桂");
}
}

让咱们看一下这个办法:

dao.save("db_student苦潮多头蛇", "瑞鲁大宗t_student",cz3360 map);

第一个参数是数据库称号,第二个参数是表名,第三个参数是载有数据的map。经过这个办法,咱们不需求任何繁琐的jdbc句子,就能完成数据新齐木家的三男增的操作!是不是很便利?

作用:

假如咱们再次运转代码,就会报错:

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

由于id是主键,所以刺进的时分是不允许重复的。

让咱们多换几个数据测验一下,加几条数据:

4、删去用户

simple-jdbc没有直接删去数据的办法,可是支撑用相似spring-jdbc的办法履行sql句子。比方:

public class TestDele上海沪通电子有限公司te {
public static void main(String[] args) {

SimpleDao Java结构从入门到装逼, 数据库建表和CRUD操作dao = new SimpleDao();
dao.update("delete from t_student where id = ?", 2018012102);
System.out.println("删去成功!");
}
}

作用:

5、修正用户

修正数据,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", "郭靖"SpyNote); //姓名
map.put("sex", "男"); //性别
SimpleDao dao = new SimpleDao();
dao.update("db_student", "t_s枝东由香里tudent", map, "id");
System.out.prinpgd678tln("修正成snh王璐功!");
}
}

如代码所示,比方我要修正郭靖的数据,将其暗码改为123456,就调用update办法。第一个参数是数据库称号,第二个参数是表名,第三个参数是载有数据的map,也便是修正后的数据。最终一个参数是主键,也便是说,依据什么字段信息来找到要修正的那一条数据?咱们要修正郭靖的数据,id是相同的,都是2018012103,所以主键字段便是id,咱们第四个Java结构从入门到装逼, 数据库建表和CRUD操作参数就传一个“id”进去。

不需求任何繁琐的jdbc句子,你只需求一个map,搞定全部!

6、查询用户

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

1、queryForJ胡白黄柳灰sonObject

2、queryForJsonArray

3、queryForList

4、queryForMap

5、queryForBean

6、queryForString

7、queryForInt

8、queryForLong

9、queryForPage (分页数据)Java结构从入门到装逼, 数据库建表和CRUD操作

每个办法看姓名就知道是干什么用的了,这儿咱们就看一下其间最难的分页查询。分页查询在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, nilinili
rows=[{"id":2018012101,"sex":"男","username":"zsf","name":"张三丰","password":"123"},
{"id":2018012103,"sex":"男","username":"gj","name":"郭靖","passwo清道夫坦克rd":"123456"}]
}

分页的成果集便是详细的列表加上总条数,于是乎,这样就完成了。