基于上一篇的封装,实现一个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将其单例化管理。
分享到:
相关推荐
总的来说,"springboot+mybatis封装第二版"是一个致力于提高开发效率、降低维护成本的解决方案。它通过最小侵入性的设计,使SpringBoot和MyBatis的集成更加平滑,同时提供了丰富的封装功能和代码生成工具,降低了...
通过以上设计,我们可以构建出一个高效、灵活且易于维护的Mybatis通用DAO层。这种设计封装了数据库操作的细节,使得业务逻辑层可以更专注于业务本身,提升了开发效率。在实际项目中,可以根据具体需求进行适当的扩展...
在封装SpringMVC时,我们可以创建一个BaseController,将通用的处理逻辑如权限验证、日志记录等放入其中,以便所有继承自BaseController的控制器都能自动应用这些功能。 Mybatis则是一个轻量级的ORM(对象关系映射...
springMVC+Mybatis封装整合:整合搭建已经完成不再述,本框架特色主要针对Mybatis框架BaseDao,BaseService,BaseServiceImpl封装,有点贵,本人也是循序见进到这一步,花了将近一个月时间,之前发布版本可以不下载...
Spring Boot旨在简化Spring框架的初始设置和配置,而MyBatis则是一个优秀的持久层框架,它提供了灵活的SQL映射机制,使得数据库操作更加便捷。下面我们将深入探讨"springboot+mybatis封装"这一主题。 首先,Spring ...
通过以上知识点,我们可以理解,这个重新封装的MyBatis-Generator不仅提供了基本的代码生成功能,而且在批量操作方面进行了增强,对于处理大数据量或频繁数据库操作的项目来说,是一个非常有价值的工具。开发者可以...
2. **MyBatis**:MyBatis是一个基于Java的持久层框架,它允许开发者编写自定义的SQL、存储过程,以及高级映射。MyBatis消除了几乎所有的JDBC代码和手动设置参数,使开发者能更专注于SQL本身。 3. **整合Spring MVC...
本实例"mybatis+springmvc自己整合封装的实例"是作者花费时间精心整合的一个半成品,尽管未能实现全部计划的功能,如自定义注解映射,但仍然具有很高的学习价值。以下将详细介绍这个整合过程中的关键知识点。 1. ...
**MyBatis** 是一个优秀的持久层框架,它支持自定义 SQL 查询语句,并能很好地与 Java 的 POJOs 对象(Plain Old Java Objects)进行映射,这使得开发者能够轻松地进行数据库交互操作。MyBatis 的设计目标是将 SQL ...
java,mybatis,spring,导航菜单树结构封装!数据封装!
另一种机制采用xml文件形式实现dao、service、controller层封装,具体业务类只需继承就可实现基本的CRUD操作,整个工程导入即可运行(一个月心算之作,稍贵一点,下载以后大部分资料都不需要看了)
标题中提到的 "springMVC+Mybatis无缝对接封装好的直接对数据库表进行增删改查等等",意味着有一个已经预先封装好的解决方案,使得开发者无需在 Mybatis 的 XML 映射文件或者 Service 层编写过多的代码,就能直接在 ...
本文将深入探讨如何使用Maven来搭建一个基于SpringMVC和Mybatis的整合封装架构。 首先,让我们了解下Maven。Maven是一个项目管理工具,它可以帮助开发者管理项目的构建、报告和文档等生命周期过程。通过Maven,我们...
这个"一个简单的mybatis查询数据库demo源码"是用于演示如何在实际项目中使用MyBatis来执行数据库查询的实例。 首先,MyBatis的核心组件包括XML配置文件、SqlSessionFactory和Mapper接口。XML配置文件定义了数据源、...
mybatis generator 自动生成实体类工具【自己封装】 运行项目中的CreateEveryModel\src\com\create\CreateModelMain 入口 将其中的数据库连接修改为要连接的数据库信息 配置//要生成文件的根目录 配置// 主包名 配置...
Mybatis Plus是一个强大的Mybatis扩展框架,它为Mybatis提供了许多便利的功能,简化了开发过程。在本教程中,我们将深入探讨Mybatis Plus如何帮助我们快速构建服务层,并附带源码供学习参考。 首先,Mybatis Plus的...
TkMyBatis是MyBatis的一个扩展,提供了更强大的功能,如自动分页、批量更新等。然而,对于复杂的业务场景,开发者往往需要对现有的框架进行二次封装以满足特定需求。本篇将详细介绍如何基于TkMyBatis进行二次封装,...
总结,"海豚核心包"是基于SpringBoot Core深度封装的一个框架,它不仅提供了丰富的工具集,还整合了MyBatis,使数据访问变得更加简单。通过理解和利用这个框架,开发者可以构建出高效、稳定且易于维护的应用。同时,...
总结起来,MyBatis通用Mapper是MyBatis的一个强大补充,它通过提供预定义的接口和SQL模板,使得开发者能够更高效地进行数据库操作,降低了开发复杂度,提升了开发效率。同时,它具有良好的扩展性和兼容性,方便与...