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();
}
@Override
public void add(Address address, int userId) {
User u = userDao.load(userId);
address.setUser(u);
super.add(address);
}
@Override
public void update(Address address) {
super.update(address);
}
@Override
public void delete(int id) {
super.delete(Address.class, id);
}
@Override
public List<Address> list(int userId) {
Map<String,Object> params = new HashMap<String, Object>();
params.put("userId", userId);
return super.list(Address.class, params);
}
@Override
public Address load(int id) {
return super.load(Address.class, id);
}
}