誕生日を格納するのに最適なMySQLの型はDATE型です。
この型は、日付情報(年、月、日)を格納するのに最適で、誕生日のような情報を扱う場合に使います。
DATE型は、'YYYY-MM-DD'の形式で日付を保存します。
DATE型を使うことで、MySQLの関数を利用して日付の計算や比較が容易になります。
以下のSQL文はidと名前と誕生日からなるusersテーブルです。
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    birthday DATE
);上記users表にあわせたUserクラスを作成します。
Javaで誕生日を格納するのに最適な型はjava.time.LocalDateです。
このクラスは年、月、日を表現するのに適しています。
LocalDateは時刻の情報を含まず、日付のみを扱います。
この例では、LocalDate.ofメソッドを使用して特定の日付を作成し、Userオブジェクトに設定しています。
また、LocalDateクラスを使用することで、日付の操作が簡単に行えるようになります。
例えば、誕生日から年齢を計算する場合もLocalDateを使うと便利です。
package model;
import java.time.LocalDate;
public class User {
    private int id;
    private String name;
    private LocalDate birthday;
    public User(int id, String name, LocalDate birthday) {
        this.id = id;
        this.name = name;
        this.birthday = birthday;
    }
    // Getter and Setter methods
    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 LocalDate getBirthday() {
        return birthday;
    }
    public void setBirthday(LocalDate birthday) {
        this.birthday = birthday;
    }
}参考に上記のusers表とuserクラスを使うUserDaoクラスを作成します。
ただし、研修で学んだSuperDaoクラスを継承するものとします。
package model.dao;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
import model.User;
public class UserDao extends SuperDao {
	// ユーザーをデータベースに挿入するメソッド
	public void insertUser(User user) {
		this.connect();
		String sql = "INSERT INTO users (name, birthday) VALUES (?, ?)";
		try (PreparedStatement stmt = con.prepareStatement(sql)) {
			stmt.setString(1, user.getName());
			stmt.setDate(2, Date.valueOf(user.getBirthday()));
			stmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	// ユーザーをIDで検索するメソッド
	public User getUserById(int id) {
		String sql = "SELECT * FROM users WHERE id = ?";
		try (PreparedStatement stmt = con.prepareStatement(sql)) {
			stmt.setInt(1, id);
			try (ResultSet rs = stmt.executeQuery()) {
				if (rs.next()) {
					String name = rs.getString("name");
					LocalDate birthday = rs.getDate("birthday").toLocalDate();
					return new User(id, name, birthday);
				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	// メインメソッドの例
	public static void main(String[] args) {
		UserDao dao = new UserDao();
		User user = new User(1, "今井", LocalDate.of(1990, 5, 25));
		dao.insertUser(user);
		User retrievedUser = dao.getUserById(1);
		if (retrievedUser != null) {
			System.out.println("名前: " + retrievedUser.getName());
			System.out.println("誕生日: " + retrievedUser.getBirthday());
		}
	}
}実行結果の例
| データベースへの接続に成功しました。 名前: 今井 誕生日: 1990-05-25  | 
以上。