查看“商苑面馆:Java命令行版之 FoodDao层(MySQL实现)”的源代码
←
商苑面馆:Java命令行版之 FoodDao层(MySQL实现)
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==Dao层== [[文件:Java8-1.png]] ==前期准备== ===建立Food类=== 在entity包下建立Food类: (如果已创建,请忽略) <nowiki>package entity; public class Food { //成员变量 //名称 private String name; //价格 private double price; //数量 private int num; /*构造方法*/ public Food(){ } public Food(String name,double price,int num){ this.name = name; this.price = price; this.num = num; } //成员方法 public String getName(){ return this.name; } public double getPrice(){ return this.price; } public int getNum(){ return this.num; } //写方法 public boolean setName(String s){ this.name = s; return true; } public boolean setPrice(double p){ this.price = p; return true; } public boolean setNum(int n){ this.num = n; return true; } public String toString(){ return "名称:" +this.name+"价格:"+ this.price + "剩余数量: " + this.num; } public static void main(String[] args) { // TODO Auto-generated method stub Food [] f = new Food[3]; f[0] = new Noodle("炸酱面",12,3,"不辣"); f[1] = new Rice("牛肉盖浇饭",3,2,"盖浇饭"); f[2] = new SmallEat("鹌鹑蛋",3,2,"微辣"); for(int i =0;i<f.length;i++){ System.out.println(f[i].toString()); } } public void buy() { // TODO Auto-generated method stub } } </nowiki> ===创建测试数据=== (如果已创建,请忽略) 接下来我们在 cloud 数据库中创建 food数据表,表结构如下: <nowiki>mysql> use cloud; Database changed mysql> CREATE TABLE IF NOT EXISTS `food`( `id` INT UNSIGNED AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, `price` DOUBLE , `num` INT , PRIMARY KEY ( `id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8; </nowiki> 插入一些数据: <nowiki>mysql> INSERT INTO `food` (name,price,num) VALUES ('zhajiangmian',10,3); Query OK, 1 row affected (0.12 sec) mysql> INSERT INTO `food` (name,price,num) VALUES ('daoxiaomian',12,5); Query OK, 1 row affected (0.04 sec)</nowiki> </nowiki> ==实现步骤== ===建立接口FoodDao=== 在包dao下建立抽象接口FoodDao <nowiki>package dao; import entity.Food; public interface FoodDao { public boolean addFoods(Food goods);//增加商品 public Food search(String s); public String toString(); } </nowiki> ===建立接口的实现类=== 接口实现类可以用多种方式实现,ArrayList,LinkedList, MySQL等 这里我们用MySQL实现 ====接口实现类FoodDaoSQL==== <nowiki>package dao; import java.sql.*; import java.util.*; //import entity.*; import entity.Food; import entity.Noodle; public class FoodDaoSQL { //private Food[] n;//食物数组 Connection con=null; public FoodDaoSQL( ){ con = getConn(); } public static void main(String[] args) { // TODO Auto-generated method stub } }</nowiki> ====编写连接方法getConn==== 这个方法的作用主要是进行数据库的初始连接: <nowiki>private static Connection getConn() { // JDBC 驱动名及数据库 URL final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; final String DB_URL = "jdbc:mysql://localhost:3306/cloud?characterEncoding=utf8"; // 数据库的用户名与密码,需要根据自己的设置 final String USER = "root"; final String PASS = "000000"; Connection conn = null; try { Class.forName(JDBC_DRIVER); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(DB_URL, USER, PASS); System.out.println("MySQL连接成功!"); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); } catch (SQLException e) { System.out.println(e.getMessage()); } return conn; }</nowiki> ====添加商品方法:addFood( )==== 模仿UserDaoSQL中的addUser可以得到: <nowiki>public int addFood(Food food){ Connection conn = this.con;//建立数据库的连接 int i = 0; //建立一个空的整形变量i try { //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; String sql = "insert into food (name,price,num) values(?,?,?)"; PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); //使用2. setXXX()系列方法为sql命令设置值 pstmt.setString(1, food.getName()); pstmt.setDouble(2, food.getPrice()); //pstmt.setInt(2, user.getAge()); pstmt.setDate pstmt.setInt(3, food.getNum()); //3.执行查询 i = pstmt.executeUpdate(); if(i!=0){ System.out.println(food.getName()+"插入成功!"); }else{ System.out.println(food.getName()+"插入失败!"); } pstmt.close(); } catch (SQLException e) {//检测/捕获异常 System.out.println(e.getMessage()); } return i; }</nowiki> 在FoodDaoSQL类的main方法中编写测试代码: <nowiki>public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub FoodDaoSQL foodset =new FoodDaoSQL(); Food f2 = new Food("saozimian",13,4); foodset.addFood(f2);//插入数据 foodset.con.close();//关闭数据库 }</nowiki> 运行、测试。 ====搜索食物方法:search()==== 模仿UserDaoSQL中的search()可以得到: <nowiki>public Food search(String s){ //代码自己仿照着UserDaoSQL中的search()写即可 }</nowiki> 在FoodDaoSQL类的main方法中编写测试代码,测试一下 ====列出全部记录:toString()==== 模仿UserDaoSQL中的toString()可以得到: <nowiki>public String toString(){ //代码自己仿照着UserDaoSQL中的toString()写即可 }</nowiki> 在FoodDaoSQL类的main方法中编写测试代码,测试一下 ===实现接口=== 到现在为止,UserDaoSQL已经实现了UserDao接口的全部方法, 因此可以在UserDaoSQL类名后面,加上implements UserDaob标识,表明把UserDao这个接口实现了。
返回至
商苑面馆:Java命令行版之 FoodDao层(MySQL实现)
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息