java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.Statement; public class BaseDao
author �½� 23 * @������dao������ 24 * 2018-10-25����2:54:57 25 */ 26 @Repository 27 public class BaseDao...{ 28 private final static Logger logger = LoggerFactory.getLogger(BaseDao.class); 29 @Autowired
BaseDAO抽取一、BaseDAO代码package com.lanson.dao;import com.lanson.pojo.Emp;import java.lang.reflect.Field...java.util.List;/** * @Author: Lansonli * @Description: MircoMessage:Mark_7001 */public abstract class BaseDao...} } return list; }}二、实现类代码package com.lanson.dao.impl;import com.lanson.dao.BaseDao...java.util.List;/** * @Author: Lansonli * @Description: MircoMessage:Mark_7001 */public class EmpDaoImpl extends BaseDao...emp.getComm(),emp.getDeptno(),emp.getEmpno()); }}package com.lanson.dao.impl;import com.lanson.dao.BaseDao
1、BaseDao 持久层业务接口实现类的公共父类,定义了jdbc操作数据库的所有公共方法,方便子类继承; import java.io.InputStream; import java.sql.Connection...java.util.Properties; /** * 持久层业务接口实现类的公共父类,定义了jdbc操作数据库的所有公共方法,方便子类继承 * @author zhukang * */ public class BaseDao...]); } // 执行增删改操作,并获取影响行数 row = pstmt.executeUpdate(); System.out.println("BaseDao...params[i]); } // 执行查询操作,并获取结果集 rs = pstmt.executeQuery(); System.out.println("BaseDao...//关闭资源 this.releaseResource(conn, pstmt, rs); } //返回动漫集合 return animes; } } 5、作业总结技巧(BaseDao
想利用泛型抽取BaseDao层,简化操作时出现故障: @Transactional这个注解是能够继承的。...于是就想写在抽取的BaseDao层上,让实现的类能够不用写@Transactional,就可开启事务。 问题描写叙述: 因为偷懒。没给BaseDao抽接口。...注意我是把@Transactional放在BaseDao上了。...測试了半天发现,出错就在BaseDao上注解:@Transactional上,原因不是非常清楚! 。!...乖乖的给BaseDao抽个接口吧,其它什么都不用改,@Transactional还是照样能够继承。
通过泛型与反射的结合,可以编写框架来使开发更容易,这里演示的是BaseDao部分的简单使用。...BaseDao部分代码: public abstract class BaseDao{ private Class clazz;//具体的实体类 public BaseDao(){...必须知道具体操作的哪个类,给clazz赋值 Type type = this.getClass().getGenericSuperclass();//得到当前对象的带有泛型信息的父类型 如:BaseDao
准备一些业务类,我们准备一个BaseDao接口,就两个方法,add和update,它有两个实现类,分别为HibernateDaoImpl和JdbcDaoImpl,再准备一个BaseService接口,也有两个方法...,add和update,它有一个实现类BaseServiceImpl,在BaseServiceImpl里,我们建立两个BaseDao接口,准备分别注入HibernateDaoImpl和JdbcDaoImpl...package com.lazycoder.dao; public interface BaseDao { public void add(); public void update();...注入的时候是根据set方法来注入的,不是根据成员变量,也就是说我们把 public BaseDao hibernateDao;改成public BaseDao abcDao;程序依然可以运行,但是如果把...public void setHibernateDao(BaseDao hibernateDao)改成public void setAbcDao(BaseDao hibernateDao),运行就会报错了
伪代码如下: package main type BaseDao struct{name string} # 匿名结构体字段BaseDao type OptDao1 struct{BaseDao}...# 嵌入值 type OptDao2 struct{*BaseDao} # 嵌入指针 func main(){ opt := OptDao2{BaseDao:&BaseDao{}} //必须手动声明嵌入的结构指针...} 上面代码中OptDao1、OptDao2嵌入了BaseDao结构体,主要区别只有嵌入值的类型不同。...mOptDao2 := OptDao2{BaseDao:&BaseDao{}} mOptDao2.name 创建mOptDao2实例时必须声明嵌入的结构指针 其他例: type Base struct
理论上,BaseDao层已经帮每个子类实现了大部分功能,子类只需要实现个性化逻辑,那么BaseDao就需要持有一个jdbcTemplate实例,这个jdbcTemplate实例要么是子类以方法调用的形式传进来...,要么是BaseDao层持有,在容器启动的时候进行初始化。...根据个人的使用经验来说,肯定是在容器启动的时候初始化,这样可以省去每次调用的时候重复性传参,并且非业务参数,接下来我们就使用代码实现: BaseDao public class BaseDao { protected...) { ((BaseDao)bean).setJdbcTemplate(jdbcTemplate); System.out.println(beanName...可以看到,在spring容器启动过程中给所有BaseDao的子类实例都填充了jdbcTemplate属性。
属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下: @Autowired() @Qualifier("baseDao...") private BaseDao baseDao; @Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定, 如果没有指定name属性,当注解写在字段上时...@Resource(name="baseDao") private BaseDao baseDao; 喜欢用 @Resource注解在字段上,且这个注解是属于J2EE的,减少了与spring
-- 创建baseDao对象 --> 22 23.../** 4 * 公用DAO接口类 5 * 时间:2014年6月4日 10:45:47 6 * @author chenyr 7 */ 8 9 public interface BaseDao...8 * @author chenyr 9 * 10 */ 11 public class BaseDaoImpl extends HibernateDaoSupport implements BaseDao...org.springframework.context.support.ClassPathXmlApplicationContext; 6 import com.basehibernate.dao.BaseDao...dao = (BaseDao)ctx.getBean("baseDao"); 16 17 Employee empl = new Employee(); 18
javaweb基础增强 内容:反射泛型、注解、日志以及利用反射泛型和注解开发自定义框架(模拟Struts) 代码结构 【package1】:com.csxiaoyao.study 使用注解对知识点1的BaseDao...package其他】 自定义框架实现 【配置文件1】:log4j.properties 日志文件配置 【配置文件2】:mystruts.xml 自定义框架配置 【知识点】 1 反射泛型 BaseDao.java.../** * 所有dao的公用的方法,都在这里实现 */ public class BaseDao{ // 保存当前运行类的参数化类型中的实际的类型 private Class...获取参数化类型中实际类型的定义(class) public BaseDao(){ // this 表示当前运行类 (AccountDao/AdminDao)...代码 当表名与数据库名称不一致,字段与属性不一样,主键不叫id,上面的BaseDao失效,具体写法见代码 3 log4j # 通过根元素指定日志输出的级别、目的地: # 日志输出优先级: debug
null; PreparedStatement pst = null; ResultSet resultSet = null; try { connection = BaseDao.getConnection...res.getInt(1); } } catch (Exception e) { e.printStackTrace(); } finally { BaseDao.close...pst.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { BaseDao.close...n_time); } } catch (Exception e) { e.printStackTrace(); } finally { BaseDao.close...product); } } catch (Exception e) { e.printStackTrace(); } finally { BaseDao.close
有时也称作:BaseDAO 作用:为了实现功能的模块化,更有利于代码的维护和升级。...下面是尚硅谷JavaWeb阶段书城项目中DAO使用的体现: 层次结构: 【BaseDAO.java】 /** * 定义一个用来被继承的对数据库进行基本操作的Dao * * @author...HanYanBing * * @param */ public abstract class BaseDao { private QueryRunner queryRunner...conn,String bookId) { // 调用BaseDao中获取一个对象的方法 Book book = null; // 写sql语句 String sql = "select...; //调用BaseDao中通用的增删改的方法 update(conn,sql, user.getUsername(),user.getPassword(),user.getEmail());
---- 报错截图如下: ---- 关键的错误信息: core.dao.BaseDao.processQuery(BaseDao.java:610) message Handler processing...---- 解决过程: 1.看到 core.dao.BaseDao.processQuery(BaseDao.java:610) 报错 打开这个java文件 2.看到org.apache.commons.beanutils.MethodUtils.getAccessibleMethod...Ljava/lang/reflect/Method; core.util.BeanUtils.describeAvailableParameter(BeanUtils.java:57) core.dao.BaseDao.processQuery...(BaseDao.java:610) core.dao.BaseDao.doPaginationQuery(BaseDao.java:441) core.dao.BaseDao.doPaginationQuery...(BaseDao.java:432) core.service.BaseService.doPaginationQuery(BaseService.java:183) sun.reflect.NativeMethodAccessorImpl.invoke0
@Autowired(required=false) 若想使用名称装配,需要配合@Qualifier一起食用,如下: @Autowired() @Qualifier("baseDao") private...BaseDao baseDao; @Resource 默认按名称装配(JDK1.6开始支持的注解)。...@Resource作用于字段 @Resource(name="base") private BaseDao baseDao; Spring注入p的过程: 查找xml中是否有id为baseDao...的元素 如果没有找到,则看是否有name属性(@Resource name=“base”),有则查找name 否则查找BaseDao类型的元素 byName 通过参数名自动装配,如果一个bean的name
JDBC 学习笔记 —— 结构分离 前期准备 一、实现你的第二个 JDBC 程序 1.1 项目基本结构 1.2 BaseDao 结构分离 1.2.1 创建 jdbc.properties 文件 1.2.2...dao 包下创建 UserDao 类,实现最基本的增删改查的方法 entity 包下创建 User 类,增加基本的 User 的基本信息 以及 getter 和 setter 方法 util 包下,使用 BaseDao...类对 JDBC 进行封装工作 1.2 BaseDao 结构分离 1.2.1 创建 jdbc.properties 文件 在 util 包中,我们将 BaseDao 中注册驱动的部分再细分下去,把注册驱动的四要素文件专门存放在...java.sql.SQLException; import cn.jdbc.dao.UserDao; import cn.jdbc.entity.User; import cn.jdbc.util.BaseDao...; public class UserDaoImpl extends BaseDao implements UserDao{ @Override public User selectUserByuserNameAndPwd
属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下: @Autowired() @Qualifier("baseDao...") private BaseDao baseDao; 3、@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定, 如果没有指定name...Java代码 @Resource(name="baseDao") private BaseDao baseDao; 我喜欢用 @Resource注解在字段上,且这个注解是属于J2EE
baseDAO; public BaseDAO() { init(); } private void init() { // buildAbilityDAO();...(DAO dao) { switch (dao) { case AdminDAO: if (baseDAO == null || baseDAO.getClass() !...: if (baseDAO == null || baseDAO.getClass() !...break; } return baseDAO; } protected void destroy() { try { if (rs !...; /** * 模块说明: 管理员增删改查 * */ public class AdminDAO extends BaseDAO { private static AdminDAO
baseDao; @Override public User login(User user) { List param = new...这个bean,BaseDao的实现结构如图: 其中BaseDaoImpl的具体实现如下: package com.tonly.dao.impl; import java.io.Serializable...并传递一个类型对象的方法实现basedao中方法的继承。... baseDao; @Override public User login(User user) { List param = new...并传递泛型参数"User",这样可以直接使用baseDao.get(hql.toString(), param)方法获取对象。
领取专属 10元无门槛券
手把手带您无忧上云