JFast Dao类采用了极为简易的设计,全部接近原生SQL,所以很灵活,本身不需要开发者自己写Dao具体实现,极大的简化了所有SQL操作的代码:废话不多说,上代码:
创建User类:
@Date // 这是lombok的东西,不去管它 @Table("t_user") // 当类名与数据库名称不一致时,需要该属性 public class User{ private Integer userId; private String userName; private String nickName; private String password; }
创建UserDao类:
public interface UserDao{ void addUser(User user); // 添加一个User boolean insertUser(User user); // 添加一个User void saveUser(User user); // 添加一个User void updateUser(User user); // 更新一个User对象 boolean deleteUser(Integer userId); // 删除指定编号的User对象 long deleteFromUser(Integer userId); // 删除指定编号的User对象 void removeFromUserByUserId(); // 删除指定编号的User对象 int deleteUser(User user); // 删除符合所有user参数的User对象 void removeUser(User user); // 删除符合所有user参数的User对象 List getUser(); // 查找所有用户 User getUser(Integer userId); // 获得指定编号的用户对象 User selectUser(Integer userId); // 获得指定编号的用户对象 Record queryUser(String userName,String password); //根据用户名密码查找用户,返回Map对象 Map findUserByUsernamePassword(String userName,String password); //根据用户名密码查找用户,返回Map对象 // 接下来是适合复杂sql的用法(手动写SQL) User selectDemo(String userName,String password); // 查询语句示例 void deleteDemo(Integer userId); // 删除语句示例 void updateDemo(User user); // 更新语句示例 boolean insertDemo(User user); // 插入语句示例 }
Dao实现类示例:
@Dao(name="userDao",description="Dao类声明,name默认值为类名首字母小写,为了引用方便,这里指定name为userDao 方便在Service/拦截器/验证器/单元测试中引用") public class UserDaoImpl implements UserDao { public void addUser(User user) {} public boolean insertUser(User user) { return false; } public void saveUser(User user) {} public void updateUser(User user) {} public boolean deleteUser(Integer userId) { return false; } public long deleteFromUser(Integer userId) { return 0; } public void removeFromUserByUserId() { } public int deleteUser(User user) { return 0; } public void removeUser(User user) { } public List getUser() { return null; } public User getUser(Integer userId) { return null; } public User selectUser(Integer userId) { return null; } public Record queryUser(String userName, String password) { return null; } public Map findUserByUsernamePassword(String userName, String password) { return null; } @Select(sql = "select userName,password from user where userName = :userName and password=:password") public User selectDemo(String userName,String password) { return null; } @Delete(sql = "delete from user where userId = [!CDATA[userId]]") public void deleteDemo(Integer userId) { } @Update(sql = "update user set userName = :userName and password = [!CDATA[password]] where userId = :userId") public void updateDemo(User user) { } @Insert(sql = "insert into user(userName,password) values (:userName,:password)") public boolean insertDemo(User user) { return false; } }
用法总结:
- 单表操作:全部使用方法名+方法参数+返回值的方式,简单快捷。
- 多表操作或者需要精确操作的:使用注解形式。
- 匹配参数可以是java基本类型,也可以是User这种封装对象。
附加说明:如何和其他ORM框架兼容:
如果开发者习惯使用其他高级orm框架,那么只需要在Dao类上加上@Body注解(或者在方法上加上@Body注解也可以),那么jfast就不会对方法进行解析。开发者可以把其他框架的sql操作写在方法体中,jfast会去调用方法体中的第三方orm框架。