一双跑鞋的mybatis(五)---mybatis封装dao

来源:互联网 发布:手机淘宝无法取消退款 编辑:程序博客网 时间:2024/04/28 15:43

baseDao.java 基础dao

package org.senssic.dao;import org.senssic.model.Pager;import org.senssic.model.SystemContext;import org.senssic.util.MyBatisUtil;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.ibatis.session.SqlSession;public class BaseDao<T> {public void add(T obj) {SqlSession session = null;try {session = MyBatisUtil.createSession();session.insert(obj.getClass().getName()+".add",obj);session.commit();} catch (Exception e) {e.printStackTrace();session.rollback();} finally {MyBatisUtil.closeSession(session);}}public void update(T obj) {SqlSession session = null;try {session = MyBatisUtil.createSession();session.update(obj.getClass().getName()+".update", obj);session.commit();} catch (Exception e) {e.printStackTrace();session.rollback();} finally {MyBatisUtil.closeSession(session);}}public void delete(Class<T> clz,int id) {SqlSession session = null;try {session = MyBatisUtil.createSession();session.delete(clz.getName()+".delete", id);session.commit();} catch (Exception e) {e.printStackTrace();session.rollback();} finally {MyBatisUtil.closeSession(session);}}@SuppressWarnings("unchecked")public T load(Class<T> clz,int id) {SqlSession session = null;T t = null;try {session = MyBatisUtil.createSession();t = (T)session.selectOne(clz.getName()+".load",id);} finally {MyBatisUtil.closeSession(session);}return t;}@SuppressWarnings("unchecked")public T loadBySqlId(String sqlId,Map<String,Object> params) {SqlSession session = null;T t = null;try {session = MyBatisUtil.createSession();t = (T)session.selectOne(sqlId,params);} finally {MyBatisUtil.closeSession(session);}return t;}@SuppressWarnings("unchecked")public T loadBySqlId(String sqlId,Object obj) {SqlSession session = null;T t = null;try {session = MyBatisUtil.createSession();t = (T)session.selectOne(sqlId,obj);} finally {MyBatisUtil.closeSession(session);}return t;}public List<T> list(Class<T> clz,Map<String,Object> params) {return this.list(clz.getName()+".list", params);}public List<T> list(String sqlId,Map<String,Object> params) {List<T> list = null;SqlSession session = null;try{session = MyBatisUtil.createSession();list = session.selectList(sqlId,params);} finally {MyBatisUtil.closeSession(session);}return list;}public Pager<T> find(Class<T> clz,Map<String,Object> params) {return this.find(clz.getName()+".find", params);}public Pager<T> find(String sqlId,Map<String,Object> params) {int pageSize = SystemContext.getPageSize();int pageOffset = SystemContext.getPageOffset();String order = SystemContext.getOrder();String sort = SystemContext.getSort();Pager<T> pages = new Pager<T>();SqlSession session = null;try{session = MyBatisUtil.createSession();if(params==null) params = new HashMap<String, Object>();params.put("pageSize", pageSize);params.put("pageOffset", pageOffset);params.put("sort", sort);params.put("order", order);List<T> datas = session.selectList(sqlId, params);pages.setDatas(datas);pages.setPageOffset(pageOffset);pages.setPageSize(pageSize);int totalRecord = session.selectOne(sqlId+"_count",params);pages.setTotalRecord(totalRecord);} finally {MyBatisUtil.closeSession(session);}return pages;}}

mybatisUtil.java 工具类

package org.senssic.util;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class MyBatisUtil {private static SqlSessionFactory factory;static {try {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");factory = new SqlSessionFactoryBuilder().build(is);} catch (IOException e) {e.printStackTrace();}}public static SqlSession createSession() {return factory.openSession();}public static void closeSession(SqlSession session) {if(session!=null) session.close();}}

pager.java分页bean

package org.senssic.model;import java.util.List;public class Pager<E> {private int pageIndex;private int pageSize;private int pageOffset;private int totalRecord;private int totalPage;private List<E> datas;public int getPageIndex() {return pageIndex;}public void setPageIndex(int pageIndex) {this.pageIndex = pageIndex;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public int getTotalRecord() {return totalRecord;}public void setTotalRecord(int totalRecord) {this.totalRecord = totalRecord;}public int getTotalPage() {return totalPage;}public void setTotalPage(int totalPage) {this.totalPage = totalPage;}public List<E> getDatas() {return datas;}public void setDatas(List<E> datas) {this.datas = datas;}public int getPageOffset() {return pageOffset;}public void setPageOffset(int pageOffset) {this.pageOffset = pageOffset;}}
SystemContext.java
package org.senssic.model;public class SystemContext {private static ThreadLocal<Integer> pageSize = new ThreadLocal<Integer>();private static ThreadLocal<Integer> pageIndex = new ThreadLocal<Integer>();private static ThreadLocal<Integer> pageOffset = new ThreadLocal<Integer>();private static ThreadLocal<String> order = new ThreadLocal<String>();private static ThreadLocal<String> sort = new ThreadLocal<String>();public static String getOrder() {return order.get();}public static void setOrder(String _order) {order.set(_order);}public static void removeOrder() {order.remove();}public static String getSort() {return sort.get();}public static void setSort(String _sort) {sort.set(_sort);}public static void removeSort() {sort.remove();}public static int getPageOffset() {return pageOffset.get();}public static void setPageOffset(int _pageOffset) {pageOffset.set(_pageOffset);}public static void removePageOffset() {pageOffset.remove();}public static void setPageSize(int _pageSize) {pageSize.set(_pageSize);}public static int getPageSize() {return pageSize.get();}public static void removePageSize() {pageSize.remove();}public static void setPageIndex(int _pageIndex) {pageIndex.set(_pageIndex);}public static int getPageIndex() {return pageIndex.get();}public static void removePageIndex() {pageIndex.remove();}}

dao实现

package org.senssic.dao;import org.senssic.model.Address;import org.senssic.model.User;import java.util.HashMap;import java.util.List;import java.util.Map;public class AddressDao extends BaseDao<Address> implements IAddressDao {private IUserDao userDao;public AddressDao() {userDao = DAOFactory.getUserDao();}@Overridepublic void add(Address address, int userId) {User u = userDao.load(userId);address.setUser(u);super.add(address);}@Overridepublic void update(Address address) {super.update(address);}@Overridepublic void delete(int id) {super.delete(Address.class, id);}@Overridepublic List<Address> list(int userId) {Map<String,Object> params = new HashMap<String, Object>();params.put("userId", userId);return super.list(Address.class, params);}@Overridepublic Address load(int id) {return super.load(Address.class, id);}}



0 0
原创粉丝点击