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框架。