当前位置: 代码迷 >> 综合 >> mybatis学习---day03(dao中基础接口,基础实现类)
  详细解决方案

mybatis学习---day03(dao中基础接口,基础实现类)

热度:64   发布时间:2023-11-24 17:48:26.0

1,基础接口
 例如:
 

 public interface BaseDao<E> {int add(E entity);int delete(int id);int update(E entity);E load(int id);List<E> list();}


 其中E标志泛型的实体,我们在做哪个模块的时候就用哪个模块具体继承其接口即可
 例如image模块:
 

public interface ImageDao extends BaseDao<Image> {}


 将泛型改为具体的模块实体

2.基础实现类(基于mybatis的)
 例如:
 

public class BaseDaoImpl<E> {public int add(E entity) {int i=0;SqlSession session=null;try {session=MybatisUtil.getSession();i=session.update(entity.getClass().getName()+".add",entity);session.commit();} catch (Exception e) {session.rollback();e.printStackTrace();}finally {MybatisUtil.close(session);}return i;}public int delete(Class<?> clz,int id) {int i=0;SqlSession session=null;try {session=MybatisUtil.getSession();i=session.update(clz.getName()+".delete",id);session.commit();} catch (Exception e) {session.rollback();e.printStackTrace();}finally {MybatisUtil.close(session);}return i;}public int update(E entity) {int i=0;SqlSession session=null;try {session=MybatisUtil.getSession();i=session.update(entity.getClass().getName()+".update",entity);session.commit();} catch (Exception e) {session.rollback();e.printStackTrace();}finally {MybatisUtil.close(session);}return i;}public E load(Class clz,int id) {E entity=null;SqlSession session=null;try {session=MybatisUtil.getSession();entity=session.selectOne(clz.getName()+".load",id);} finally {MybatisUtil.close(session);}return entity;}public List<E> list(Class<?> clz) {List<E> list=null;SqlSession session=null;try {session=MybatisUtil.getSession();list=session.selectList(clz.getName()+".list");} finally {MybatisUtil.close(session);}return list;}
}

其中需要注意的是:
 

session.update(entity.getClass().getName()+".update",entity);


  A.不要忘记的是.getName(),不然只得到的是类类型,没有得到实体的名字
  B.在“”里面的方法不要忘记前面的 . 

继承基础实现类:

public class ImageDaoImpl extends BaseDaoImpl<Image> implements ImageDao {@Overridepublic int add(Image entity) {return super.add(entity);}@Overridepublic int delete(int id) {return super.delete(Image.class, id);}@Overridepublic int update(Image entity) {return super.update(entity);}@Overridepublic Image load(int id) {return super.load(Image.class, id);}@Overridepublic List<Image> list() {return super.list(Image.class);}}

3.工具类MybatisUtil 用于读取加载mybatis-config.xml配置文件,
  在mybatis-config.xml中又加载了
 各种
    a.实体类的别名,
    b.环境,
    c.注册实体映射文件;

 在实体映射文件中,
   b.具体的方法,
   a.以及结果集的映射,以及结果集的优化

   结果集映射在具体方法前面。

public class MybatisUtil {private static SqlSessionFactory sf=null;static {try {Reader rd=Resources.getResourceAsReader("mybatis-config.xml");if(sf==null) {sf=new SqlSessionFactoryBuilder().build(rd);}} catch (IOException e) {e.printStackTrace();}}public static SqlSession getSession() {return sf.openSession();}
public static void close(SqlSession session) {if(session!=null) session.close();}
}

 

  相关解决方案