今天任务:
完成了MySQL数据库集成、考核与健康模块功能
代码如下-- 创建数据库
CREATE DATABASE IF NOT EXISTS hr_management;
USE hr_management;
-- 员工表
CREATE TABLE IF NOT EXISTS employees (
emp_id INT PRIMARY KEY AUTO_INCREMENT,
emp_name VARCHAR(50) NOT NULL,
department VARCHAR(50),
position VARCHAR(50),
hire_date DATE
);
-- 考核表
CREATE TABLE IF NOT EXISTS evaluations (
eval_id INT PRIMARY KEY AUTO_INCREMENT,
emp_id INT,
eval_date DATE DEFAULT CURRENT_DATE,
score INT DEFAULT (FLOOR(RAND() * 101)),
FOREIGN KEY (emp_id) REFERENCES employees(emp_id)
);
-- 健康表
CREATE TABLE IF NOT EXISTS health_records (
record_id INT PRIMARY KEY AUTO_INCREMENT,
emp_id INT,
checkup_date DATE DEFAULT CURRENT_DATE,
blood_pressure VARCHAR(20),
heart_rate INT,
bmi DECIMAL(5,2),
FOREIGN KEY (emp_id) REFERENCES employees(emp_id)
);package com.example.hrms.utils
import android.util.Log
import com.zaxxer.hikari.HikariConfig
import com.zaxxer.hikari.HikariDataSource
import java.sql.Connection
import java.sql.SQLException
object DatabaseHelper {
private const val TAG = "DatabaseHelper"
private var dataSource: HikariDataSource? = null
init {
val config = HikariConfig().apply {
jdbcUrl = "jdbc:mysql://10.0.2.2:3306/hr_management" // 使用模拟器本地地址
username = "android_user"
password = "password123"
maximumPoolSize = 5
connectionTimeout = 3000
}
dataSource = HikariDataSource(config)
}
fun getConnection(): Connection? {
return try {
dataSource?.connection
} catch (e: SQLException) {
Log.e(TAG, "获取数据库连接失败", e)
null
}
}
}package com.example.hrms.models
data class Employee(
val empId: Int,
val name: String,
val department: String,
val position: String,
val hireDate: String
)package com.example.hrms.models
data class Evaluation(
val evalId: Int,
val empId: Int,
val date: String,
val score: Int
)package com.example.hrms.models
data class HealthRecord(
val recordId: Int,
val empId: Int,
val checkupDate: String,
val bloodPressure: String,
val heartRate: Int,
val bmi: Double
)package com.example.hrms.dao
import com.example.hrms.models.Employee
import com.example.hrms.utils.DatabaseHelper
import java.sql.Statement
object EmployeeDao {
fun getAllEmployees(): List
val employees = mutableListOf
DatabaseHelper.getConnection()?.use { conn ->
conn.createStatement().use { stmt ->
stmt.executeQuery("SELECT * FROM employees").use { rs ->
while (rs.next()) {
employees.add(Employee(
rs.getInt("emp_id"),
rs.getString("emp_name"),
rs.getString("department"),
rs.getString("position"),
rs.getString("hire_date")
))
}
}
}
}
return employees
}
}package com.example.hrms.dao
import com.example.hrms.models.Evaluation
import com.example.hrms.utils.DatabaseHelper
object EvaluationDao {
fun getEvaluationsByEmployee(empId: Int): List
val evaluations = mutableListOf
DatabaseHelper.getConnection()?.use { conn ->
conn.prepareStatement("SELECT * FROM evaluations WHERE emp_id = ?").use { stmt ->
stmt.setInt(1, empId)
stmt.executeQuery().use { rs ->
while (rs.next()) {
evaluations.add(Evaluation(
rs.getInt("eval_id"),
rs.getInt("emp_id"),
rs.getString("eval_date"),
rs.getInt("score")
))
}
}
}
}
return evaluations
}
fun addRandomEvaluation(empId: Int) {
DatabaseHelper.getConnection()?.use { conn ->
conn.prepareStatement(
"INSERT INTO evaluations (emp_id) VALUES (?)",
Statement.RETURN_GENERATED_KEYS
).use { stmt ->
stmt.setInt(1, empId)
stmt.executeUpdate()
}
}
}
}package com.example.hrms.activities
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.hrms.adapters.HealthRecordAdapter
import com.example.hrms.dao.HealthRecordDao
import com.example.hrms.databinding.ActivityHealthBinding
class HealthActivity : AppCompatActivity() {
private lateinit var binding: ActivityHealthBinding
private val empId by lazy { intent.getIntExtra("emp_id", -1) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityHealthBinding.inflate(layoutInflater)
setContentView(binding.root)
loadHealthRecords()
}
private fun loadHealthRecords() {
val records = HealthRecordDao.getRecordsByEmployee(empId)
binding.recyclerView.apply {
layoutManager = LinearLayoutManager(this@HealthActivity)
adapter = HealthRecordAdapter(records)
}
}
}以及一些适配器代码
遇到的问题:
今天给idea下载插件时造成了插件冲突,而导致idea项目无法打开,在使用安全模式-safemode后逐一排除了问题。
浙公网安备 33010602011771号