`
cnflat
  • 浏览: 13600 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个简单的mybatis封装(二)

阅读更多
基于上一篇的封装,实现一个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封装第二版"是一个致力于提高开发效率、降低维护成本的解决方案。它通过最小侵入性的设计,使SpringBoot和MyBatis的集成更加平滑,同时提供了丰富的封装功能和代码生成工具,降低了...

    Mybatis通用DAO设计封装(mybatis)

    通过以上设计,我们可以构建出一个高效、灵活且易于维护的Mybatis通用DAO层。这种设计封装了数据库操作的细节,使得业务逻辑层可以更专注于业务本身,提升了开发效率。在实际项目中,可以根据具体需求进行适当的扩展...

    SpringMVC+Mybatis封装实例

    在封装SpringMVC时,我们可以创建一个BaseController,将通用的处理逻辑如权限验证、日志记录等放入其中,以便所有继承自BaseController的控制器都能自动应用这些功能。 Mybatis则是一个轻量级的ORM(对象关系映射...

    springMVC+Mybatis封装整合

    springMVC+Mybatis封装整合:整合搭建已经完成不再述,本框架特色主要针对Mybatis框架BaseDao,BaseService,BaseServiceImpl封装,有点贵,本人也是循序见进到这一步,花了将近一个月时间,之前发布版本可以不下载...

    springboot+mybatis封装

    Spring Boot旨在简化Spring框架的初始设置和配置,而MyBatis则是一个优秀的持久层框架,它提供了灵活的SQL映射机制,使得数据库操作更加便捷。下面我们将深入探讨"springboot+mybatis封装"这一主题。 首先,Spring ...

    重新封装mybatis-generator

    通过以上知识点,我们可以理解,这个重新封装的MyBatis-Generator不仅提供了基本的代码生成功能,而且在批量操作方面进行了增强,对于处理大数据量或频繁数据库操作的项目来说,是一个非常有价值的工具。开发者可以...

    spring mvc+mybatis封装

    2. **MyBatis**:MyBatis是一个基于Java的持久层框架,它允许开发者编写自定义的SQL、存储过程,以及高级映射。MyBatis消除了几乎所有的JDBC代码和手动设置参数,使开发者能更专注于SQL本身。 3. **整合Spring MVC...

    mybatis+springmvc自己整合封装的实例

    本实例"mybatis+springmvc自己整合封装的实例"是作者花费时间精心整合的一个半成品,尽管未能实现全部计划的功能,如自定义注解映射,但仍然具有很高的学习价值。以下将详细介绍这个整合过程中的关键知识点。 1. ...

    mybatis第二天课堂笔记

    **MyBatis** 是一个优秀的持久层框架,它支持自定义 SQL 查询语句,并能很好地与 Java 的 POJOs 对象(Plain Old Java Objects)进行映射,这使得开发者能够轻松地进行数据库交互操作。MyBatis 的设计目标是将 SQL ...

    java,mybatis,spring,导航菜单树结构封装!数据封装!

    java,mybatis,spring,导航菜单树结构封装!数据封装!

    基于MAVEN的SpringMVC+Mybatis整合及dao、service强封装

    另一种机制采用xml文件形式实现dao、service、controller层封装,具体业务类只需继承就可实现基本的CRUD操作,整个工程导入即可运行(一个月心算之作,稍贵一点,下载以后大部分资料都不需要看了)

    springMVC+Mybatis无缝对接封装好的直接对数据库表进行增删改查等等

    标题中提到的 "springMVC+Mybatis无缝对接封装好的直接对数据库表进行增删改查等等",意味着有一个已经预先封装好的解决方案,使得开发者无需在 Mybatis 的 XML 映射文件或者 Service 层编写过多的代码,就能直接在 ...

    maven搭建springmvc+Mybatis整合封装架构

    本文将深入探讨如何使用Maven来搭建一个基于SpringMVC和Mybatis的整合封装架构。 首先,让我们了解下Maven。Maven是一个项目管理工具,它可以帮助开发者管理项目的构建、报告和文档等生命周期过程。通过Maven,我们...

    一个简单的mybatis查询数据库demo源码

    这个"一个简单的mybatis查询数据库demo源码"是用于演示如何在实际项目中使用MyBatis来执行数据库查询的实例。 首先,MyBatis的核心组件包括XML配置文件、SqlSessionFactory和Mapper接口。XML配置文件定义了数据源、...

    mybatis generator 自动生成实体类工具【自己封装】

    mybatis generator 自动生成实体类工具【自己封装】 运行项目中的CreateEveryModel\src\com\create\CreateModelMain 入口 将其中的数据库连接修改为要连接的数据库信息 配置//要生成文件的根目录 配置// 主包名 配置...

    Mybatis plus无介绍快使用,自带封装service层的使用附源码(三)

    Mybatis Plus是一个强大的Mybatis扩展框架,它为Mybatis提供了许多便利的功能,简化了开发过程。在本教程中,我们将深入探讨Mybatis Plus如何帮助我们快速构建服务层,并附带源码供学习参考。 首先,Mybatis Plus的...

    基于TkMyBatis的通用Mapper的二次封装 主要讲Id的生成策略

    TkMyBatis是MyBatis的一个扩展,提供了更强大的功能,如自动分页、批量更新等。然而,对于复杂的业务场景,开发者往往需要对现有的框架进行二次封装以满足特定需求。本篇将详细介绍如何基于TkMyBatis进行二次封装,...

    spingboot-core深度封装,底层依赖mybatis

    总结,"海豚核心包"是基于SpringBoot Core深度封装的一个框架,它不仅提供了丰富的工具集,还整合了MyBatis,使数据访问变得更加简单。通过理解和利用这个框架,开发者可以构建出高效、稳定且易于维护的应用。同时,...

    mybatis通用mapper

    总结起来,MyBatis通用Mapper是MyBatis的一个强大补充,它通过提供预定义的接口和SQL模板,使得开发者能够更高效地进行数据库操作,降低了开发复杂度,提升了开发效率。同时,它具有良好的扩展性和兼容性,方便与...

Global site tag (gtag.js) - Google Analytics