Sesi
Sesi ialah enkapsulasi siri proses interaksi dengan pangkalan data yang dicetuskan oleh operasi perniagaan tertentu dalam aplikasi Dengan mewujudkan saluran sementara, ia bertanggungjawab untuk penciptaan dan kitar semula sumber sambungan dengan pangkalan data, sambil menyediakan lebih lanjut Arahan abstrak. Kelebihan panggilan antara muka dan berasaskan sesi:
Pemaju tidak perlu risau sama ada sumber sambungan dikeluarkan dengan betul
Piawaian pengekodan yang ketat lebih kondusif untuk penyelenggaraan dan pemahaman
Parameter objek sesi:
Pemegang sambungan pangkalan data (IConnectionHolder):
Nyatakan sambungan sumber data yang digunakan oleh sesi ini; sesi dalam bentuk kelas dalaman Objek hasil dan memberikan rujukan kepada objek contoh Sesi; kod sampel dilengkapkan di sekitar operasi CRUD (tambah, pertanyaan, ubah suai, padam) pengguna (Pengguna) untuk menunjukkan cara menggunakan objek ISession. Entiti data adalah seperti berikut:
// 使用默认数据源开启会话 User _result = JDBC.get().openSession(new ISessionExecutor<User>() { public User execute(ISession session) throws Exception { // TODO 此处填写业务逻辑代码 return session.findFirst(EntitySQL.create(User.class)); } }); // 使用指定的数据源开启会话 IConnectionHolder _conn = JDBC.get().getConnectionHolder("oracledb"); // 不需要关心_conn对象的资源释放 IResultSet<User> _results = JDBC.get().openSession(_conn, new ISessionExecutor<IResultSet<User>>() { public IResultSet<User> execute(ISession session) throws Exception { // TODO 此处填写业务逻辑代码 return session.find(EntitySQL.create(User.class)); } });
Sisipkan:
@Entity("user") public static class User extends BaseEntity<User, String> { @Id @Property private String id; @Property(name = "user_name") private String username; @Property(name = "pwd") private String pwd; @Property(name = "sex") private String sex; @Property(name = "age") private Integer age; // 忽略Getter和Setter方法 public static class FIELDS { public static final String ID = "id"; public static final String USER_NAME = "username"; public static final String PWD = "pwd"; public static final String SEX = "sex"; public static final String AGE = "age"; } public static final String TABLE_NAME = "user"; }
eupdate):User _user = new User(); _user.setId(UUIDUtils.UUID()); _user.setUsername("suninformation"); _user.setPwd(DigestUtils.md5Hex("123456")); _user.setAge(20); _user.setSex("F"); // 执行数据插入 session.insert(_user); // 或者在插入时也可以指定/排除某些字段 session.insert(_user, Fields.create(User.FIELDS.SEX, User.FIELDS.AGE).excluded(true));
eQuery (cari):- method 1: menetapkan syarat melalui entiti data (atribut bukan kosong akan disambungkan menggunakan dan syarat) , dan pertanyaan semua rekod yang memenuhi syarat;
User _user = new User(); _user.setId("bc19f5645aa9438089c5e9954e5f1ac5"); _user.setPwd(DigestUtils.md5Hex("654321")); // 更新指定的字段 session.update(_user, Fields.create(User.FIELDS.PWD));
Kaedah 4 : hanya Kembalikan rekod pertama yang memenuhi syarat (Cari Dulu);Padam (Padam): - Padam rekod berdasarkan kunci utama entiti:
User _user = new User(); _user.setUsername("suninformation"); _user.setPwd(DigestUtils.md5Hex("123456")); // 返回所有字段 IResultSet<User> _users = session.find(_user); // 或者返回指定的字段 _users = session.find(_user, Fields.create(User.FIELDS.ID, User.FIELDS.AGE));
- Padamkan rekod berdasarkan syarat:
- Statistik (Pengiraan):
IResultSet<User> _users = session.find( EntitySQL.create(User.class) .field(User.FIELDS.ID) .field(User.FIELDS.SEX), // 设置Order By条件 Where.create() .orderDesc(User.FIELDS.USER_NAME));
- Laksanakan operasi kemas kini (ExecuteForUpdate): Kaedah ini digunakan untuk melaksanakan pernyataan SQL yang tidak menyediakan pengkapsulan kaedah yang sepadan dalam antara muka ISession dan pelaksanaan operasi melaksanakan kaedah ini, baris rekod yang terjejas akan dikembalikan Nombor, seperti pelaksanaan pemadaman rekod pengguna di atas yang berumur lebih muda daripada 20 tahun:
IResultSet<User> _users = session.find( EntitySQL.create(User.class) .field(User.FIELDS.ID) .field(User.FIELDS.SEX), Where.create() .orderDesc(User.FIELDS.USER_NAME), // 查询第1页,每页10条记录,统计总记录数 Page.create(1).pageSize(10).count(true));
Nota: Operasi di atas, semua kumpulan sokongan baca dokumentasi antara muka API dan kod sumber yang berkaitan untuk kegunaan tertentu