得到DAO接口的拦截器写法

本文介绍了一个具体的Struts框架实例拦截器实现方法。该拦截器通过初始化创建两个DAO实例并将它们设置为请求属性,以便在Action调用时能够访问到这些DAO对象。

转载请注明出处 csdn wankaiming


public class InstanceInterceptor implements Interceptor{

	private IStudentDAO isd;
	private IQuestionDAO iqd;
	
	public InstanceInterceptor() {
		// TODO Auto-generated constructor stub
	}

	public void destroy() {
		isd = null;
		iqd = null;

	}

	public void init() {
		isd = new StudentDAOImpl();
		iqd = new QuestionDAOImpl();

	}

	public String intercept(ActionInvocation arg0) throws Exception {
		ActionContext ac=arg0.getInvocationContext();
		HttpServletRequest request=(HttpServletRequest) ac.get(ServletActionContext.HTTP_REQUEST);
		request.setAttribute("studentdao", isd);
		request.setAttribute("questiondao", iqd);
		return arg0.invoke();
	}



}




### MyBatis-Plus 的简便写法与使用方法 MyBatis-Plus 是一款基于 MyBatis 的增强工具,在 MyBatis 的基础上提供了更多的便捷功能,极大地减少了开发者的编码量。以下是关于 MyBatis-Plus 的简便写法及其具体使用的详细介绍。 --- #### 一、MyBatis-Plus 的核心特性简介 MyBatis-Plus 提供了许多开箱即用的功能,比如通用 CRUD、条件构造器、分页插件等,这些功能可以显著减少重复代码的编写。它的主要特点如下: 1. **内置通用 Mapper**:无需手写基础的增删改查接口。 2. **条件构造器**:支持链式调用构建复杂的 SQL 查询语句。 3. **分页插件**:集成简单,兼容多种数据库。 4. **自动填充**:在实体类字段上标注注解即可实现插入或更新时的自动赋值[^3]。 --- #### 二、MyBatis-Plus 的简便写法示例 ##### 1. 使用通用 Mapper 实现基本 CRUD 操作 通过继承 `BaseMapper<T>` 接口,可以直接获得常用的 CRUD 方法,无需额外实现。 ```java // 定义 Mapper 接口 public interface UserMapper extends BaseMapper<User> { // 此处不需要再定义任何方法,默认拥有 insert, deleteById, updateById 等方法 } // 调用示例 @Autowired private UserMapper userMapper; // 插入一条数据 User user = new User(); user.setName("张三"); user.setAge(25); userMapper.insert(user); // 根据 ID 删除数据 userMapper.deleteById(1L); // 修改数据 user.setId(1L); // 设置要修改的记录ID user.setAge(26); userMapper.updateById(user); // 根据 ID 查询数据 User result = userMapper.selectById(1L); System.out.println(result.getName()); ``` 上述代码展示了如何利用 MyBatis-Plus 的通用 Mapper 快速完成增删改查操作,省去了大量 XML 配置和 DAO 的手动实现[^1]。 --- ##### 2. 条件构造器 QueryWrapper 的使用 QueryWrapper 是 MyBatis-Plus 提供的一个强大的条件构造器,支持链式调用,能够快速构建复杂的查询条件。 ```java // 创建条件构造器对象 QueryWrapper<User> queryWrapper = new QueryWrapper<>(); // 添加查询条件 queryWrapper.like("name", "张").ge("age", 18).orderByDesc("create_time"); // 执行查询 List<User> userList = userMapper.selectList(queryWrapper); for (User u : userList) { System.out.println(u.getName() + ", " + u.getAge()); } ``` 此段代码实现了模糊匹配姓名为“张”的用户,并筛选年龄大于等于 18 岁的结果,最后按创建时间倒序排列。相比传统的方式,这种方式更加简洁直观[^2]。 --- ##### 3. 自动填充功能的应用 MyBatis-Plus 支持在插入或更新数据时自动填充某些字段,例如创建时间和修改时间。只需配合 `@TableField` 注解和自定义处理器即可轻松实现。 ```java @Data public class User implements Serializable { private Long id; @TableField(fill = FieldFill.INSERT) private Date createTime; // 插入时自动填充 @TableField(fill = FieldFill.UPDATE) private Date updateTime; // 更新时自动填充 private String name; private Integer age; } // 自定义 MetaObjectHandler 处理逻辑 @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "createTime", () -> new Date(), Date.class); } @Override public void updateFill(MetaObject metaObject) { this.strictUpdateFill(metaObject, "updateTime", () -> new Date(), Date.class); } } ``` 在此例子中,每当新增一条记录时,`createTime` 字段会被自动赋予当前时间戳;而在更新某条记录时,`updateTime` 字段也会相应地被刷新[^3]。 --- ##### 4. 分页插件的配置与使用 MyBatis-Plus 内置了分页插件,仅需几行代码便可启用分页功能。 ```java // 配置分页拦截器 @Configuration public class MyBatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } } // 使用分页查询 Page<User> page = new Page<>(1, 10); // 当前页码为1,每页显示10条数据 IPage<User> iPage = userMapper.selectPage(page, null); iPage.getRecords().forEach(System.out::println); System.out.println("总记录数:" + iPage.getTotal()); System.out.println("总页数:" + iPage.getPages()); ``` 这段代码完成了对用户的分页查询操作,返回结果不仅包含了当前页的数据列表,还附带了总的记录数量和其他统计信息[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值