# Feature Examples ## 1) Auto ID after insert ```java PlayerModel player = new PlayerModel(); player.setName("Steve"); api.orm().insert(player); long id = player.getId(); ``` ## 2) snake_case default ```java class PlayerStats { private int totalKills; } // table: player_stats, column: total_kills ``` ## 3) findOneWhere & deleteWhere ```java PlayerModel one = api.orm().findOneWhere( PlayerModel.class, "level >= ?", java.util.Collections.singletonList(10) ); int deleted = api.orm().deleteWhere( PlayerModel.class, "level < ?", java.util.Collections.singletonList(1) ); ``` ## 4) @DbColumn(length/unique/nullable) ```java @DbColumn(length = 32, unique = true, nullable = false) private String username; ``` ## 5) findWhere with order/limit/offset ```java List page = api.orm().findWhere( PlayerModel.class, "level >= ?", java.util.Collections.singletonList(10), "level DESC", 10, 0 ); ``` ## 6) Query Builder ```java List top = api.orm().query(PlayerModel.class) .where("level >= ?", 10) .orderBy("level DESC") .limit(10) .list(); ``` ## 7) Query Builder + Fluent Conditions + Join ```java import static com.andrewkydev.database.orm.Conditions.*; List rows = api.orm().query(PlayerModel.class) .select("players.*") .join("LEFT JOIN clans ON clans.id = players.clan_id") .where(eq("players.status", "ACTIVE").and(gt("players.level", 10))) .groupBy("players.id") .having("COUNT(clans.id) > ?", 0) .orderBy("players.level DESC") .limit(10, 0) .list(); ``` ## 8) Custom types (UUID/JSON) ```java @DbJson private java.util.Map metadata; // UUID is built-in. Custom type example: api.orm().registerAdapter(MyType.class, new TypeAdapter() { ... }); ```