使用DAO模式开发宠物管理系统---hellokitty
宠物有狗和企鹅。
狗的属性有:编号、名称、亲密值、健康值、品种、所属主人编号。
企鹅的属性有:编号、名称、亲密值、健康值、性别、所属主人编号。
该系统中主人可以领养宠物,主人的属性有:编号、用户名、密码、姓名、地址、电话。
要求将狗和企鹅的数据保存到同一张表中除所属主人编号、品种、性别外,其余列均不允许为空。主人编号为空表示该宠物未被人领养。
创建宠物表与主人表,狗和企鹅、主人各初始化5条以上的记录用于测试。
编写程序实现以下功能:
1. 主人可以登录到系统中完成下列操作:
2. 主人可以查看当前系统中未被领养的宠物
3. 主人可以领养宠物
4. 主人可以查看自己已领养的所有宠物的信息
5. 主人可以根据编号查询宠物信息
6. 主人可以弃养自己已领养的宠物
7. 退出系统
我是java的初学者,中间代码也有可能有错误的,或是不够简洁的。。。
辅助类
package test; /**
* DAO模式
* 第一步 辅助类
*
* @author acer
*
*/
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; /**
*
* JDBC编程步骤:
* 1 加载驱动 Class.forName("字符串")
* 2 建立Connection对象
* 3 通过Connetion创建PreparedStatement对象
* 4 执行SQL语句
* 5 处理结果
* 6 释放资源
* @author acer
*
*/
public class JdbcUtil { private static String driver;// 驱动
private static String url;// 连接字符串
private static String user;// 用户名
private static String password;// 密码 private static Connection conn;// Connection对象
private static PreparedStatement ptmt;// PreparedStatement对象
private static ResultSet rs;// ResultSet对象 /* 加载数据库驱动 */
static {
try {
loadDatabase();
} catch (Exception e1) {
e1.printStackTrace();
}
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
} private JdbcUtil() { } /**
* 读取配置文件
*
* @throws Exception
*/ private static void loadDatabase() throws Exception {
// 创建SAXReader对象
SAXReader reader = new SAXReader();
// 创建Document对象
Document document = reader.read(new File("src/test/database.xml"));
List list = document.selectNodes("/database/driver");
// 迭代
Iterator it = list.iterator();
while (it.hasNext()) {
Element item = (Element) it.next();
driver = item.getText();
} list = document.selectNodes("/database/url");
it = list.iterator();
while (it.hasNext()) {
Element item = (Element) it.next();
url = item.getText();
} list = document.selectNodes("/database/user");
it = list.iterator();
while (it.hasNext()) {
Element item = (Element) it.next();
user = item.getText();
} list = document.selectNodes("/database/password");
it = list.iterator();
while (it.hasNext()) {
Element item = (Element) it.next();
password = item.getText();
}
} /**
* 获取数据库连接
*
* @return 连接对象
*/
public static Connection getConnection() {
try {
return conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
throw new RuntimeException(e);
}
} /**
* 释放ResultSet资源
*
* @param rs
*/
public static void close(ResultSet rs) {
try {
if (null != rs)
rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
} /**
* 释放PreparedStatement资源
*
* @param ptmt
*/
public static void close(PreparedStatement ptmt) {
try {
if (null != ptmt)
ptmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
} /**
* 释放Connection资源
*
* @param conn
*/
public static void close(Connection conn) {
try {
if (null != conn)
conn.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
} /**
* 释放所有资源
*/
public static void close() {
try {
if (null != rs && !rs.isClosed()) {
rs.close();
}
rs = null;
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
try {
if (null != ptmt && !ptmt.isClosed()) {
ptmt.close();
}
ptmt = null;
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
try {
System.out.println(conn);
if (null != conn && !conn.isClosed()) {
conn.close();
}
conn = null;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
} /**
* 执行增删改
*
* @param sql
* 待执行的SQL语句
* @param params
* SQL语句中?占位符的参数
* @return 受影响的行数
*/
public static int executeUpdate(String sql, Object... params) {
try {
if (null == conn)
getConnection();
ptmt = conn.prepareStatement(sql);
if (null != params) { // 为SQL语句中?占位符设置参数
for (int i = 0; i < params.length; i++) {
ptmt.setObject(i + 1, params[i]);
}
}
int cnt = ptmt.executeUpdate();
return cnt;
} catch (SQLException e) {
throw new RuntimeException(e);
}
} /**
* 执行查询操作
*
* @param sql
* @param params
* @return 查询出来的结果集
*/
public static ResultSet executeQuery(String sql, Object... params) {
try {
ptmt = conn.prepareStatement(sql);
if (null != params) {
for (int i = 0; i < params.length; i++) { // 为每个?占位符设置参数
ptmt.setObject(i + 1, params[i]);
}
}
return rs = ptmt.executeQuery();
} catch (SQLException e) {
throw new RuntimeException("执行查询操作失败", e);
}
} /**
* 查询
*/
public static ResultSet executeQuery(String sql) { try {
ptmt = conn.prepareStatement(sql);
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
return rs = ptmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs; } }
package test; import java.sql.ResultSet;
import java.util.Scanner; import test.dao.PetDao;
import test.dao.impl.PetDaoMySQLImpl;
import test.entity.Master;
import test.entity.Pet; /**
* 用户的能力
* @author acer
*
*/
public class MasterManger {
/**
* 登录主菜单
* @throws Exception
*/
public void frist() throws Exception{
Scanner input = new Scanner(System.in);
System.out.println("欢迎来到宠物上世界!");
System.out.println("请选择。。。。。\n1 登录 2 注册 3退出");
int choose = input.nextInt();
switch(choose){
case 1:
login();
break;
case 2:
register();
break;
case 3:
System.exit(0);
}
}
/**
*
* 新用户注册
* @throws Exception
*/
public void register() throws Exception{
Scanner input=new Scanner(System.in);
System.out.print("请注册你的用户名:");
String username = input.next();
System.out.print("请注册你的密码:");
String password = input.next();
System.out.print("请注册你的名字:");
String name = input.next();
System.out.print("请注册你的地址:");
String address = input.next();
System.out.print("请注册你的电话号码:");
int phone = input.nextInt();
Master master=new Master(username,password,name,address,phone);
//保存到数据库中
PetDao dao=new PetDaoMySQLImpl();
int cnt=dao.save(master);
System.out.println("注册成功!\n您可以登录了!!!");
login();
} /**
* 主人登录
* @throws Exception
*/
public void login() throws Exception{
Scanner input = new Scanner(System.in);
System.out.print("请输入你的用户名:");
String username= input.next();
System.out.print("请输入你的密码:");
String password = input.next();
String sql="select * from master where username=? and password=?";
JdbcUtil.getConnection();
//执行查询
ResultSet rs=JdbcUtil.executeQuery(sql,username,password);
if(rs.next()){
System.out.println("主人登录成功!");
System.out.println("主人的基本信息:");
System.out.println("编码:"+rs.getInt("id")+"\n姓名:"+rs.getString("name")+
"\n地址:"+rs.getString("address")+"\n电话:"+rs.getInt("phone"));
menu();
}
else{
System.out.println("1 用户名或密码错误");
System.out.println("2 还是您还没有注册呢!");
int start=input.nextInt();
if(start==1){
login() ;
}
else if(start==2){
register();
} }
} /**
* 4 根据id号查询宠物信息
* @throws Exception
*/ public void findPetById() throws Exception{
Scanner input=new Scanner(System.in);
System.out.println("请输入你查询的宠物id号:");
int id=input.nextInt();
String sql="select * from pet where id=?";
JdbcUtil.getConnection();
ResultSet rs=JdbcUtil.executeQuery(sql, id);
System.out.println("这是你查找的宠物信息!!");
if(rs.next()){
if(rs.getString("gender").equals("无")){
System.out.println("宠物狗");
System.out.println("编号:"+rs.getInt("id")+"\t名字:"+rs.getString("name")+"\t亲密值:"
+rs.getInt("love")+"\t健康值:"+rs.getInt("health")+"\t品种:"+rs.getString("varietiess"));
}
else{
System.out.println("\n宠物企鹅");
System.out.println("编号:"+rs.getInt("id")+"\t名字:"+rs.getString("name")+"\t亲密值:"
+rs.getInt("love")+"\t健康值:"+rs.getInt("health")+"\t性别:"+rs.getString("gender"));
}
} } /**
* 1 查询所有没有被领养的宠物
* @throws Exception
*/ public void findAllNoMaster() throws Exception{
String sql="select * from pet where masterId=0";
JdbcUtil.getConnection();
ResultSet rs=JdbcUtil.executeQuery(sql);
System.out.println("这些是还没有被领养的宠物");
while(rs.next()){
if(rs.getString("gender").equals("无")){
System.out.println("宠物狗");
System.out.println("编号:"+rs.getInt("id")+"\t名字:"+rs.getString("name")+"\t亲密值:"
+rs.getInt("love")+"\t健康值:"+rs.getInt("health")+"\t品种:"+rs.getString("varietiess"));
}
else{
System.out.println("\n宠物企鹅");
System.out.println("编号:"+rs.getInt("id")+"\t名字:"+rs.getString("name")+"\t\t亲密值:"
+rs.getInt("love")+"\t健康值:"+rs.getInt("health")+"\t性别:"+rs.getString("gender"));
}
} } /**
* 2 查询自己所养的宠物
* @throws Exception
*/ public void myPet() throws Exception{
Scanner input = new Scanner(System.in);
System.out.println("请输入你的ID号:");
int id=input.nextInt();
String sql="select * from pet where masterId=?";
JdbcUtil.getConnection();
ResultSet rs = JdbcUtil.executeQuery(sql,id);
System.out.println("这是您的宠物信息!!");
while(rs.next()){
if(rs.getString("gender").equals("无")){
System.out.println("宠物狗");
System.out.println("编号:"+rs.getInt("id")+"\t名字:"+rs.getString("name")+"\t亲密值:"
+rs.getInt("love")+"\t健康值:"+rs.getInt("health")+"\t品种:"+rs.getString("varietiess"));
}
else{
System.out.println("宠物企鹅");
System.out.println("编号:"+rs.getInt("id")+"\t名字:"+rs.getString("name")+"\t\t亲密值:"
+rs.getInt("love")+"\t健康值:"+rs.getInt("health")+"\t性别:"+rs.getString("gender"));
}
}
} /**
* 领养宠物
*/
public void adoptPet(){ Scanner input = new Scanner(System.in);
System.out.println("请输入你的编号:");
int id=input.nextInt();
System.out.println("请输入你要领养宠物的编号:");
int num=input.nextInt();
Pet pet=new Pet(id,num);
PetDao dao=new PetDaoMySQLImpl();
int cnt=dao.adoptPet(pet); if(cnt==1){
System.out.println("领养成功!!");
}else{
System.out.println("领养失败!");
}
} /**
* 弃养自己的宠物
*/ public void updatePet(){
Scanner input = new Scanner(System.in);
System.out.println("请输入你要弃养宠物的名字:");
String name=input.next();
System.out.println("请确认你所弃养的宠物编号:");
int id=input.nextInt();
Pet pet=new Pet(name,id);
PetDao dao=new PetDaoMySQLImpl();
int cnt=dao.updatePet(pet);
if(cnt==1){
System.out.println("就这样放弃了您的宠物!!!");
}else{
System.out.println("弃养宠物失败!");
} } /**
*
* 功能主菜单
* @throws Exception
*/
public void menu() throws Exception{
Scanner input =new Scanner(System.in);
System.out.println("\n请选择。。。");
while (true){
System.out.println("1 查看当前系统中未被领养的宠物\n2 查看自己已领养的所有宠物的信息\n3"
+ " 根据编号查询宠物信息\n4 弃养自己已领养的宠物\n5 可以领养宠物\n6 退出系统");
int choose=input.nextInt();
switch(choose){
case 1:
findAllNoMaster();
break;
case 2:
myPet();
break;
case 3:
findPetById();
break;
case 4:
myPet();
updatePet();
break;
case 5:
findAllNoMaster();
adoptPet();
break;
case 6:
System.exit(0);
}
}
} }
测试类 1 package test; public class Test {
public static void main(String[] args) throws Exception {
MasterManger u=new MasterManger();
u.frist();
}
}
实体类
package test.entity;
/**
* 第二步 实体
* 宠物类
* @author acer
*
*/
public class Pet { private int id;//编号
private String name;//名称
private int love;//亲密值
private int health;//健康值
private int masterId;//所属主人编号
public Pet() {
super();
}
public Pet(int id, String name, int love, int health, int masterId) {
super();
this.id = id;
this.name = name;
this.love = love;
this.health = health;
this.masterId = masterId;
} public Pet(int masterId) {
super();
this.masterId = masterId;
} public Pet(String name) {
super();
this.name = name;
} public Pet(int masterId, int id ) {
super();
this.id = id;
this.masterId = masterId;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getMasterId() {
return masterId;
}
public void setMasterId(int masterId) {
this.masterId = masterId;
} public Pet(String name,int id ) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Pet [id=" + id + ", name=" + name + ", love=" + love
+ ", health=" + health + ", masterId=" + masterId + "]";
} }
package test.entity;
/**
* 宠物狗
* @author acer
*
*/
public class Dogs extends Pet {
public String varieties;//品种 public Dogs(){
} public Dogs(int id, String name, int love, int health, int masterId,
String varieties) {
super(id, name, love, health, masterId);
this.varieties = varieties;
} public String getVarieties() {
return varieties;
} public void setVarieties(String varieties) {
this.varieties = varieties;
} @Override
public String toString() {
return "Dogs [varieties=" + varieties + "+ super.toString() + ";
} }
package test.entity;
/**
* 主人类
* @author acer
*
*/
public class Master { private int id;
private String username;
private String password;
private String name;
private String address;
private int phone; public Master(int id) {
super();
this.id = id;
} public Master(String username, String password, String name,
String address, int phone) {
super();
this.username = username;
this.password = password;
this.name = name;
this.address = address;
this.phone = phone;
} public Master(int id, String username, String password, String name,
String address, int phone) {
super();
this.id = id;
this.username = username;
this.password = password;
this.name = name;
this.address = address;
this.phone = phone;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} public int getPhone() {
return phone;
} public void setPhone(int phone) {
this.phone = phone;
} @Override
public String toString() {
return "Master [id=" + id + ", username=" + username + ", password="
+ password + ", name=" + name + ", address=" + address
+ ", phone=" + phone + "]";
} }
package test.entity;
/**
* 企鹅类
* @author acer
*
*/
public class Penguin extends Pet{
private String gender;
public Penguin(){ }
public Penguin(int id, String name, int love, int health, int masterId,
String gender) {
super(id, name, love, health, masterId);
this.gender = gender;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Penguin [gender=" + gender + "" + super.toString()
+ "]";
} }
DAO接口
package test.dao;
/**
* 第三步: DAO接口
*/
import java.sql.ResultSet;
import test.entity.Master;
import test.entity.Pet; public interface PetDao {
/**
* 用于注册新的用户
* @param master
* @return
*/ int save(Master master);
/**
* 2 查看没有被领养的宠物
*
* @return 宠物
*/
ResultSet noMasterPet(); /**
* 根据编号查询宠物信息
*/
ResultSet getPetById(int id);
/**
* 查看自己的宠物
*/
ResultSet myPet(int id);
/**
* 领养宠物
*/
int adoptPet(Pet pet);
/**
*
* 弃养自己的宠物
*/
int updatePet(Pet pet);
}
DAO接口实现类
package test.dao.impl; /**
* 第四步 DAO接口实现类
*
*/
import java.sql.ResultSet; import test.JdbcUtil;
import test.dao.PetDao;
import test.entity.Master;
import test.entity.Pet; public class PetDaoMySQLImpl implements PetDao {
/**
* 注册 成功
*/
@Override
public int save(Master master) {
// 1 SQL语句
String sql = "insert into master(username,password,name,address,phone) values (?,?,?,?,?)";
// 2 建立连接
JdbcUtil.getConnection();
// 3 执行操作
int cnt = JdbcUtil.executeUpdate(sql, master.getUsername(),
master.getPassword(), master.getName(), master.getAddress(),
master.getPhone());
// 4 释放资源
JdbcUtil.close();
return cnt;
} /**
* 没有被领养的宠物 成功
*/
@Override
public ResultSet noMasterPet() {
String sql = "select * from pet where masterId =0";
JdbcUtil.getConnection();
ResultSet rs = JdbcUtil.executeQuery(sql);
JdbcUtil.close();
return rs;
} /**
* 根据id号查找宠物 成功
*/
@Override
public ResultSet getPetById(int id) {
String sql = "select * form pet where id=?";
JdbcUtil.getConnection();
ResultSet rs = JdbcUtil.executeQuery(sql, id);
JdbcUtil.close();
return rs;
} /**
* 查询自己的宠物 成功
*
*/
@Override
public ResultSet myPet(int id) {
String sql = "select * from pet where masterId=?";
JdbcUtil.getConnection();
ResultSet rs = JdbcUtil.executeQuery(sql, id);
JdbcUtil.close();
return rs; } /**
* 领养宠物
*
*/
@Override
public int adoptPet(Pet pet) {
String sql = "update pet set masterId=? where id=?";
JdbcUtil.getConnection();
int cnt = JdbcUtil.executeUpdate(sql, pet.getMasterId(), pet.getId());
JdbcUtil.close();
return cnt;
} /**
*
* 弃养自己的宠物
*/
@Override
public int updatePet(Pet pet) {
String sql = "update pet set masterId=0 WHERE name=? and id=?";
JdbcUtil.getConnection();
int cnt = JdbcUtil.executeUpdate(sql, pet.getName(), pet.getId());
JdbcUtil.close();
return cnt;
} }
数据库内容
create table pet(
id int not null primary key auto_increment,
name varchar(50) not null,
love int not null,
health int not null,
varietiess varchar(20),
gender varchar(10),
masterId int
); create table master(
id int not null primary key auto_increment,
username varchar(50) not null,
password varchar(50) not null,
name varchar(50) not null,
address varchar(100) not null,
phone int not null
); insert into pet values (null,'小狗one',90,90,'牧羊犬','无',1);
insert into pet values (null,'小狗two',90,90,'牧羊犬','无',2);
insert into pet values (null,'小狗three',90,90,'牧羊犬','无',3);
insert into pet values (null,'小狗four',90,90,'牧羊犬','无',0);
insert into pet values (null,'小狗five',90,90,'牧羊犬','无',0);
insert into pet values (null,'小狗six',90,90,'牧羊犬','无',0); insert into pet values (null,'企鹅1',89,89,'无','男',1);
insert into pet values (null,'企鹅2',89,89,'无','女',0);
insert into pet values (null,'企鹅3',89,89,'无','男',0);
insert into pet values (null,'企鹅4',89,89,'无','女',0);
insert into pet values (null,'企鹅5',89,89,'无','男',2); insert into master values (null,'one','one1','张三','四川成都',4914676);
insert into master values (null,'two','two2','李四','四川成都',4914671);
insert into master values (null,'three','three3','王五','四川成都',4914672);
insert into master values (null,'four','four4','小明','四川成都',4914673);
insert into master values (null,'five','five5','小鬼','四川成都',4914674);
使用DAO模式开发宠物管理系统---hellokitty的更多相关文章
- Java开发新闻管理系统(前后端)+爬虫百度、新浪等新闻
ForFuture News 新闻管理系统 项目演示地址:http://www.ganquanzhong.top [注]:文档下 ...
- C/S模式开发中如何利用WebBrowser控件制作导航窗体
原文:C/S模式开发中如何利用WebBrowser控件制作导航窗体 转自: CSDN 相信不少同学们都做过MIS系统的开发,今天这里不讨论B/S模式开发的问题.来谈谈winform开发.用过市面上常见 ...
- 2、原生jdbc的dao模式
一.dao模式 (data access object)1.作用:持久层,专门操作数据的层次结构,不掺杂任何的业务和其他内容2.dao组成部分: a.数据库工厂类 b.数据实体类 javabean p ...
- Javaweb学习笔记——(十七)——————JDBC的原理、四大核心类、四大参数、预编译、Dao模式、批处理、大数据、时间类型的转换
JDBC入门 *导入jar包:驱动 *加载驱动类:Class.forName("类名"); *给出url.username.password,其中url背下来 *使用DriverM ...
- 熟悉DAO模式的用法
今天主要是使用DAO模式. DAO模式通过对业务层提供数据抽象层接口,实现了以下目标: 1. 数据存储逻辑的分离 通过对数据访问逻辑进行抽象,为上层机构提供抽象化的数据访问接口.业务层无需关心具体的s ...
- Java_Web之宠物管理系统
使用JSP+servLet实现宠物管理系统,oraC1e11g作为后台数据厍,实现查看宠物和增加宠物的功能由你实现,如图: 其中宠物包栝:狗.猫.鸟.鼠 具体要求及推荐实现步骤 第一步:创建数据库代码 ...
- Java DAO 模式
转载自https://www.runoob.com/note/27029 DAO 模式 DAO (DataAccessobjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访 ...
- 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚
新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...
- JavaFX桌面应用-MVC模式开发,“真香”
使用mvc模块开发JavaFX桌面应用在JavaFX系列文章第一篇 JavaFX桌面应用开发-HelloWorld 已经提到过,这里单独整理使用mvc模式开发开发的流程. ~ JavaFX桌面应用开发 ...
随机推荐
- function [eigf,eigv,dof]=laplaceeig(node,elem,problem)
function [eigf,eigv,dof]=laplaceeig(node,elem,problem) % -boundary eigenvalue problem % problem='0-b ...
- <context:component-scan>自动扫描
主要讲解自动扫描的<context:component-scan>中的2个子标签的使用方法 在Spring MVC中的配置中一般会遇到这两个标签,作为<context:compone ...
- ASP.NET 中 <%= %> 与 <%: %> 的区别
做个备忘 <%= %> 内容原封不动输出 <%: %> 对内容进行编码后输出 即:<%: str %> 等价于 <%= Html.Encode(str) %& ...
- GeoServer中配置GeoWebCache切片缓存目录
war版的GeoServer中,默认情况下,GeoWebCache切片会缓存在C盘某目录下.该目录比较隐蔽,并且随着切片缓存的增多,所占空间也会越来越大,所以建议手动配置其切换缓存目录. 配置方式:在 ...
- 程序媛计划——mysql索引
定义: 索引是一种单独的.物理的对数据库表中一列或多列的值进行排序的一种存储结构 #为字段创建索引 #在表中的字段中创建索引mysql> create index ind_score on ...
- Maven+SSM框架项目实例——IDEA
一.项目环境 开发系统:Window10 开发工具:IDEA JDK:1.8 框架:Maven+Spring+SpringMVC+Mybatis 数据库:Mysql 二.项目结构 项目文件架构: 三 ...
- Python小白学习之路(十二)—【前向引用】【风湿理论】
前向引用 风湿理论(函数即变量) 理论总是很抽象,我个人理解: 代码从上到下执行,一旦遇到定义的函数体,内存便为其开辟空间,并用该函数的名字作为一个标识但是该函数体内具体是什么内容,这个时候并不着急去 ...
- 纯css实现不固定行数的文本在一个容器内垂直居中
项目中要实现的效果如图: html代码 及 css代码: <!DOCTYPE html> <html> <head> <meta charset=" ...
- TestNG的常用注解
@BeforeSuite:表示此注解的方法会在当前测试集合(Suite)中的任一测试用例开始运行之前执行 @AfterSuite:表示此注解的方法会在当前测试集合(Suite)中的所有测试程序运行结束 ...
- 移动端h5直播项目|html5直播实战开发|h5仿陌陌
最近一些直播.小视频什么的都比较火,像陌陌.抖音.火山短视频… 于是空闲时间自己也利用html5技术也试着倒腾了下直播项目,使用到了h5+css3+iscroll+zepot+swiper+wlsPo ...