# xiaofang-adv
**Repository Path**: okfang/xiaofang-adv
## Basic Information
- **Project Name**: xiaofang-adv
- **Description**: A course design assignment made with javafx.
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-07-03
- **Last Updated**: 2022-07-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 游戏物品管理系统
> @email: lovefyj616@foxmail.com

本管理系统可以存储同一类物品的数量,支持出售、使用、移除、购买等物品操作,此外还引入了个人的生命值、法力值、金币、攻击力的属性,用来展示该系统优秀的数据绑定操作。
例如,苹果的效果是 "法力值+10" ,点击使用后,该人物对应的生命值属性+10,同时与该属性绑定的红色进度条(血条)也会同步更新;点击购买炸弹时,系统会首先判断用户是否具有足够的金钱购买,并进行响应...
> 部署该系统时,需要导入项目依赖(在下文会提及),并将src目录里的sql文件导入到数据库中,修改数据库连接的配置文件,方可正常运行!
## 1. 项目依赖(包)及结构
### 1.1 项目依赖
javafx-sdk-11.0.2、mysql-connector-java-8.8.16、mybatis、log4j-1.2.17
### 1.2 项目结构
### 1.3 数据库结构
## 2. 类结构(UML图)
### 2.1 数据bean
用来数据的存储及fx组件之间的动态绑定

### 2.2 主界面
#### 2.2.1 游戏主类 (Game.java)

#### 2.2.2 商店类 (MarketStage.java)

#### 2.2.3 登录(Login.java)、注册类(Register.java)

#### 2.2.4 自定义面板类(TableViewPane.java、TopPane)

### 2.3 工具类 (连接数据库)

## 3. 数据的存储及读入、查询
> 所有数据库操作都以静态方法的形式在MyBatis中定义
### 3.2 引入MyBatis Factory 单例模式
#### 3.2.1 配置数据库地址、用户名、密码
在项目 cn/akfang/advanture/mybatis/mybatis-config.xml 中,**配置数据库信息**
在property标签中,分别填写name为 url, username, password的标签
如下代码,表示 **数据库地址**为 本机(127.0.0.1),**数据库名**为 xiaofang ,**用户名**为 root,**密码**为 root
```
...
...
```
#### 3.2.2 单例模式
```java
static {
System.out.println("MyBatis factory 初始化 ...");
// 静态代码块: 初始化 SqlSessionFactory 实例
try{
String resource = "./cn/akfang/advanture/mybatis/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
factory = new SqlSessionFactoryBuilder().build(inputStream);
}
catch(Exception e)
{
e.printStackTrace();
}
}
```
### 3.3 在mapper.xml 中定义所有操作
这里篇幅有限,增删改查各选一个展示,详细请自行查看
```sql
```
```sql
INSERT INTO `player_profile` (`player_id`,`nick_name`,`password`,`registered_date`) VALUES (#{player_id},#{nick_name},#{password},#{registered_date});
```
```sql
update `player_box` set `amount`=#{amount} where object_id=#{object_id}
```
```sql
delete from player_box where object_id=#{object_id} and owner_id=#{owner_id}
```
...
### 3.4 封装Sqlsession
所有session同样以静态方法的形式,存于MyBatis 类中
```Java
public static HashMap> getObjectPropertyFromDatabase(){
HashMap> objectProperty = new HashMap<>();
try (SqlSession session = MyBatis.factory.openSession()){
List