`
陆地小神仙
  • 浏览: 8724 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JFast应用系列之(3) -- Dao类详解

 
阅读更多

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

 

 

1
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics