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. 读Pyqt4教程,带你入门Pyqt4 _008

    QCalendarWidget QCalendarWidget 提供基于月份的日历窗口组件,它允许用户简单并且直观的选择日期. #!/usr/bin/python # -*- coding: utf- ...

  2. python2.7入门 01

    进入python官网  http://www.python.org/download/ 下载python2.7.x  版 下载安装后配置环境变量    在path中——>>>把安装路 ...

  3. 浅谈SIEM

    一.概念 SIEM ( Security Information Event Management,安全信息与事件管理) Gartner的定义:安全信息和事件管理(SIEM)技术通过对来自各种事件和上 ...

  4. js运算符和if语句,switch语句

    逻辑运算符 类型 运算符 算数运算符 +   -    *   /   %   ++   -- 赋值运算符 = 比较运算符 >   <   >=  <=   ==   !=   ...

  5. Java实现 LeetCode 547 朋友圈(并查集?)

    547. 朋友圈 班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指 ...

  6. Java实现 蓝桥杯VIP 算法训练 单词接龙

    问题描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  7. Java实现 LeetCode 187 重复的DNA序列

    187. 重复的DNA序列 所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:"ACGAATTCCG".在研究 DNA 时,识别 DNA 中的重复序列有时会对 ...

  8. Java实现 LeetCode 148 排序链表

    148. 排序链表 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序. 示例 1: 输入: 4->2->1->3 输出: 1->2->3-> ...

  9. Java实现 蓝桥杯 数独游戏

    你一定听说过"数独"游戏. 如图,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个同色九宫内的数字均含1-9,不重复. 数独的答案都是唯一 ...

  10. java实现取球游戏

    /* 今盒子里有 n 个小球,A.B 两人轮流从盒中取球,每个人都可以看到另一个人取了多少个, 也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定: 每个人从盒子中取出的球的 ...