1、首先安装数据库,在windows上安装和在unix上面安装环境不一样,我在自己的本地电脑上安装,安装成功之后,如果使用navicat远程工具访问,需要允许mysql远程能被访问

方法二、直接授权(推荐)

  从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:

# mysql -u root -proot 
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;

操作完后切记执行以下命令刷新权限

FLUSH PRIVILEGES

工程中需要添加下面的jar包

数据库表:

我们来看程序的代码:

package com.weiyuan.test;

public class Person {
private String pid;
private String pname;
private int age;
private String sex;
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((pid == null) ? 0 : pid.hashCode());
result = prime * result + ((pname == null) ? 0 : pname.hashCode());
result = prime * result + ((sex == null) ? 0 : sex.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (pid == null) {
if (other.pid != null)
return false;
} else if (!pid.equals(other.pid))
return false;
if (pname == null) {
if (other.pname != null)
return false;
} else if (!pname.equals(other.pname))
return false;
if (sex == null) {
if (other.sex != null)
return false;
} else if (!sex.equals(other.sex))
return false;
return true;
}
public Person(String pid, String pname, int age, String sex) {
super();
this.pid = pid;
this.pname = pname;
this.age = age;
this.sex = sex;
}
public Person(){ }
@Override
public String toString() {
return "Person [pid=" + pid + ", pname=" + pname + ", age=" + age
+ ", sex=" + sex + "]";
} }
package com.weiyuan.test;

import java.sql.SQLException;
import java.util.List;
import java.util.Map; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;
import org.junit.runner.RunWith; import cn.itcast.jdbc.JdbcUtils;
import cn.itcast.jdbc.TxQueryRunner; /**
* 对数据库操作类的测试
* */
public class TxRunnerTest { @Test
public void testUpdate() throws SQLException{
QueryRunner run = new TxQueryRunner();
String sql = "insert into person(pid,pname,age,sex)values(?,?,?,?)";
Object[] params = {"2","张三",20,"男"};
run.update(sql,params);
System.out.println("ok"); } /*
* 测试批处理的方法
* */ @Test
public void testUpdate2() throws SQLException{
try{
//开启事物
JdbcUtils.beginTransaction();
QueryRunner run = new TxQueryRunner();
String sql = "insert into person(pid,pname,age,sex)values(?,?,?,?)";
Object[] params = {"2","张三",20,"男"};
run.update(sql,params); Object[] params2 = {"20","张三",20,"男"};
run.update(sql,params2); //提交事物
JdbcUtils.commitTransaction();
}catch(Exception e){
//如果存在异常回滚事物
JdbcUtils.rollbackTransaction();
}
} /**测试查询方法
* @throws SQLException
* 注意事项:1 person类中的字段必须和数据库中表的字段名称一模一样
* 2 person存在public Person(){ }的构造函数
* */
@Test
public void testQuery() throws SQLException{ QueryRunner run = new TxQueryRunner();
String sql = "select * from person where pid=?";
Person p = run.query(sql, new BeanHandler<Person>(Person.class),"20");
System.out.println(p); } @Test
public void testQuery2() throws SQLException{ QueryRunner run = new TxQueryRunner();
String sql = "select * from person";
List<Person> lists = run.query(sql, new BeanListHandler<Person>(Person.class));
System.out.println(lists); } @Test
public void testQuery3() throws SQLException{
/*
* {sex=男, age=20, pname=张三, pid=20}
* */
QueryRunner run = new TxQueryRunner();
String sql = "select * from person where pid=?";
Map<String,Object> map= run.query(sql,
new MapHandler(),"20");
System.out.println(map); } @Test
public void testQuery4() throws SQLException{
/*
* [{sex=男, age=1, pname=l;l;sl;, pid=1}, {sex=男, age=20, pname=张三, pid=2},
* {sex=男, age=20, pname=张三, pid=2}, {sex=男, age=20, pname=张三, pid=2},
* {sex=男, age=20, pname=张三, pid=2}, {sex=男, age=20, pname=张三, pid=2},
* {sex=男, age=20, pname=张三, pid=20}, {sex=男, age=20, pname=张三, pid=2}, {sex=男, age=20, pname=张三, pid=20},
* {sex=男, age=20, pname=张三, pid=2}]
* */
QueryRunner run = new TxQueryRunner();
String sql = "select * from person";
List<Map<String,Object>> maps= run.query(sql,
new MapListHandler());
System.out.println(maps); } @Test
public void testQuery5() throws SQLException{
/*
* 统计表的总共有多少条记录
* ScalarHandler将单行单列的结果封装成Object对象
* 直接如果直接将obj转成Int对象不同的驱动可能存在不一样的问题,
* 所以先转换成Number对象,在转化成int类型
* */
QueryRunner run = new TxQueryRunner();
String sql = "select count(*) from person";
Object obj = run.query(sql, new ScalarHandler());
Number number = (Number) obj;
int count = number.intValue();
System.out.println(count); }
}

JavaWeb网上图书商城完整项目-数据库操作工具类的更多相关文章

  1. JavaWeb网上图书商城完整项目-数据库操作工具类2-MapHandle的高级用法

    1.现在在上面一章的基础上,我们引入一个address表,该表记录person类的地址,address表的格式如下所示 现在person类要和address表想关联,得到当前联系人的住宅地址,我们应该 ...

  2. JavaWeb网上图书商城完整项目--day02-4.regist页面提交表单时对所有输入框进行校验

    1.现在我们要将table表中的输入的参数全部提交到后台进行校验,我们提交我们是按照表单的形式提交,所以我们首先需要在table表外面添加一个表单 <%@ page language=" ...

  3. JavaWeb网上图书商城完整项目--24.注册页面的css样式实现

    现在框架已经做好了,即下来我们要对页面进行装饰了,第一步给每一个元素添加id 1.最外面的div添加id为divMain 2.第二个div添加id为divTitle,里面的span对应的id为span ...

  4. JavaWeb网上图书商城完整项目--13.项目所需环境的搭建

    1.首先安装mysql 创建项目所需的数据库,直接运行项目提供的goods.sql文库 2.myeclipse创建一个web project ,项目的名称是goods 把视频中提供的项目原型下的提供的 ...

  5. JavaWeb网上图书商城完整项目--过滤器解决中文乱码

    我们知道,如果是POST请求,我们需要调用request.setCharacterEncoding(“utf-8”)方法来设计编码:如果是GET请求,我们需要自己手动来处理编码问题.如果我们使用了En ...

  6. JavaWeb网上图书商城完整项目--day03-1.图书模块功能介绍及相关类创建

    1 前两天我们学习了user用户模块和图书的分类模块,接下来我们学习图书模块 图书模块的功能主要是下面的功能: 2 接下来我们创建对应的包 我们来看看对应的数据库表t_book CREATE TABL ...

  7. JavaWeb网上图书商城完整项目--day02-12.激活功能各层实现

    1.我们来看程序的代码 数据库层: 1.通过激活码查找到对应的用户 2.设置用户的激活状态 2.业务层 1.通过数据库接口通过验证码得到对应的用户 2.判断当用户是否为空,如果没有通过激活码查找到对应 ...

  8. JavaWeb网上图书商城完整项目--day02-9.提交注册表单功能之servlet层实现

    1.当用户在界面提交注册提交的时候,我们在UerServlet来实现具体的业务方法 标准demo: 1CommonUtils CommonUtils类就两个方法: lString uuid():生成长 ...

  9. JavaWeb网上图书商城完整项目--day02-8.提交注册表单功能之dao、service实现

    1.发送邮件 发送邮件的时候的参数我们都写在了配置文件中,配置文件放在src目录下,可以使用类加载器进行加载该数据 //向注册的用户发送邮件 //1读取配置文件 Properties properti ...

随机推荐

  1. [SD.TEAM语录]AC语录

    决定做了就要马上去做,不要有任何犹豫     本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士) 转载自[宝宝巴士SuperDo团队] 原文链接: http:// ...

  2. 深度学习入门: CNN与LSTM(RNN)

    1. 理解深度学习与CNN: 台湾李宏毅教授的入门视频<一天搞懂深度学习>:https://www.bilibili.com/video/av16543434/ 其中对CNN算法的矩阵卷积 ...

  3. 是时候扔掉cmder, 换上Windows Terminal

    作为一个Windows的长期用户,一直没有给款好用的终端,知道遇到了 cmder,它拯救一个习惯用Windows敲shell命令的人. 不用跟我安利macOS真香!公司上班一直用macOS,一方面确实 ...

  4. django-CBV刨析、模板层

    今日内容概要 CBV源码剖析 模版层 模版语法传值 模版语法之过滤器 模版语法之标签 自定义过滤器.标签及inclusion_tag 模版的继承 模版的导入 FBV与CBV ""& ...

  5. 我天!xx.equals(null) 是什么骚操作??

    问题背景 我的天,最近做 Code Review 看到一个同事的骚操作,他写了一个工具类,大概是这样的: public static boolean isNull(Object object){ re ...

  6. VNC下载,Windows系统下VNC如何下载和安装!

    IIS7服务器管理工具是一款VNC viewer的客户端,能够操作VNC,进行日常的功能实现:同时还可进行FTP的日常操作,能够高效地利用FTP的传输功能:也可以批量操作Windows.Linux系统 ...

  7. 如何在Spring Boot应用启动之后立刻执行一段逻辑

    1. 前言 不知道你有没有接到这种需求,项目启动后立马执行一些逻辑.比如简单的缓存预热,或者上线后的广播之类等等.如果你使用 Spring Boot 框架的话就可以借助其提供的接口CommandLin ...

  8. Java实现 蓝桥杯 算法提高 拿糖果

    算法提高 拿糖果 时间限制:1.0s 内存限制:256.0MB 问题描述 妈妈给小B买了N块糖!但是她不允许小B直接吃掉. 假设当前有M块糖,小B每次可以拿P块糖,其中P是M的一个不大于根号下M的质因 ...

  9. Java实现k个数乘(cheng)(自然数的k乘积问题)

    k个数乘(cheng) 题目描述 桐桐想把一个自然数N分解成K个大于l的自然数相乘的形式,要求这K个数按从小到大排列,而且除了第K个数之外,前面(K-l)个数是N分解出来的最小自然数.例如:N=24, ...

  10. Java实现 洛谷 P1423 小玉在游泳

    import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = ...