一个简单的mybatis封装(二)

3 篇文章 0 订阅
3 篇文章 0 订阅
基于上一篇的封装,实现一个UserDAO
接口:IUserDAO,也是在mybatis配置中对应的一个mapper接口

package example.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import example.model.User;

public interface IUserDAO {
public User findById(int id);
public User findByName(String name);
public void addUser(User user);
public List<User> findUsers(@Param("start")int start, @Param("size")int size);
public Map<Integer, User> findUserByIds(List<Integer> list);
}


具体实现,继承了AbstractBatisDAO,供业务逻辑层调用。

package example.dao.impl;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.SqlSession;

import example.dao.AbstractBatisDAO;
import example.dao.IUserDAO;
import example.model.User;

public class UserDAO extends AbstractBatisDAO implements IUserDAO {

@Override
public User findById(final int id) {
User user = (User) super.process(new AbstractBatisDAO.SqlCaller() {
public Object doWith(SqlSession session) {
IUserDAO mapper = session.getMapper(IUserDAO.class);
return mapper.findById(id);
}
});
return user;
}

@Override
public User findByName(final String name) {
User user = (User) super.process(new AbstractBatisDAO.SqlCaller() {
public Object doWith(SqlSession session) {
IUserDAO mapper = session.getMapper(IUserDAO.class);
return mapper.findByName(name);
}
});
return user;
}

@Override
public void addUser(final User user) {
// TODO Auto-generated method stub
super.process(new AbstractBatisDAO.SqlCaller() {
public Object doWith(SqlSession session) {
IUserDAO mapper = session.getMapper(IUserDAO.class);
mapper.addUser(user);
return null;
}
});
}

@Override
public List<User> findUsers(@Param("start")final int start,
@Param("size")final int size) {
List<User> users = (List<User>)super.process(new AbstractBatisDAO.SqlCaller() {
public Object doWith(SqlSession session) {
IUserDAO mapper = session.getMapper(IUserDAO.class);
return mapper.findUsers(start, size);
}
});
return users;
}

@Override
public Map<Integer, User> findUserByIds(final List<Integer> list) {
Map<Integer, User> users = (Map<Integer, User>)super.process(new AbstractBatisDAO.SqlCaller() {
public Object doWith(SqlSession session) {
IUserDAO mapper = session.getMapper(IUserDAO.class);
return mapper.findUserByIds(list);
}
});
return users;
}

}


最后是一个调用的例子:

package example;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import example.dao.impl.UserDAO;
import example.model.User;

public class SimpleBatis {
public static void main(String[] args) throws Exception {

MybatisSessionMgr sessionMgr = new MybatisSessionMgr();
sessionMgr.init();
UserDAO userDao = new UserDAO();
userDao.setSessionMgr(sessionMgr);
User user = null;
user = new User();
user.setName("terry");
user.setSex((byte)1);
user.setAge(30);
userDao.addUser(user);
System.out.println("sleeping 2 seconds...");

user = userDao.findByName("terry");
if(user != null) {
System.out.println("find user:"+user.getName()+", id="+user.getId());
} else {
System.out.println("user not found");
}
List<Integer> ids = new ArrayList<Integer>(2);
ids.add(1);
ids.add(2);
Map<Integer, User> map = userDao.findUserByIds(ids);
if(map != null) {
for(Integer i : map.keySet()) {
System.out.println("key from map:"+i);
User u = map.get(i);
System.out.println(u.getId()+"-"+u.getName()+", sex:"+u.getSex()+", age:"+u.getAge());
}
}
}
}


SessionMgr,DAO的实现类都是线程安全,可以通过spring IOC将其单例化管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值