Basedao抽取

本文详细介绍了在Java环境中使用MyBatis框架结合DAO模式进行数据库操作的设计与实现过程。通过具体的代码示例,展示了如何创建通用的BaseDao接口及其实现类BaseDaoImpl,以及特定的UserMapper接口和UserDaoImpl实现类。这些组件共同构成了一个灵活且可扩展的数据库访问层。

1,basedao

public interface BaseDao<T> {
	public void save(T entity);// 保存

	public void delete(T entity);// 删除用户

	public void update(T entity);// 更新用户

	public T findById(Serializable id);// 根据主键查找用户

	public List<T> getAll();// 查看所有

}

2,baseDaoImpl

public abstract class BaseDaoImpl<T> extends SqlSessionDaoSupport implements BaseDao<T> {
	@Override
	@Autowired
	public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
		super.setSqlSessionFactory(sqlSessionFactory);
	}

	Class<T> clazz;
	ParameterizedType pt;
	String clsname;

	public BaseDaoImpl() {
		pt = (ParameterizedType)this.getClass().getGenericSuperclass();     //cn.tax.nsfw..coredao.impl.BaseDaoImpl<cn.tax.nsfw.user.entity.User>
		clazz = (Class<T>)pt.getActualTypeArguments()[0];  //cn.tax.nsfw.user.entity.User
		clsname=clazz.getSimpleName();
		System.out.println(clsname+"构造");
	}

	@Override
	public void save(T entity) {
		System.out.println(clsname+"方法");
		getSqlSession().insert("com.dao."+clsname+"Mapper.save",entity);
	}

	@Override
	public void delete(T entity) {

	}

	@Override
	public void update(T entity) {

	}

	@Override
	public T findById(Serializable id) {
		return null;
	}

	@Override
	public List<T> getAll() {
		return null;
	}
}

3,Usermapper’

public interface UserMapper extends BaseDao<User> {
	//public int save( String username, String pwd);
	public User fintByUsername(String username);
}

4,UserDaoImpl

@Repository("userMapper")
public class UserDaoImpl extends BaseDaoImpl<User> implements UserMapper {

	public User fintByUsername(String username){
		return getSqlSession().selectOne("com.dao.UserMapper.findByUsername",username);
	}
}

5,application.properties

mybatis.mapper-locations=classpath:config/*.xml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值