如果我们再次运行代码,就会报错:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '2018012101' for key 'PRIMARY'
因为id是主键,所以插入的时候是不允许重复的。
让我们多换几个数据测试一下,加几条数据:
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("删除成功!"); } }
效果:
修改数据,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,搞定一切!
6、查询用户查询用户我提供了多个接口:
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"}] }
分页的结果集就是具体的列表加上总条数,于是乎,这样就实现了。
,