在Mybatis开发中,使用到的是代理Dao的方式实现增删改查,这样就不需要在写Dao的实现类
但是Mybatis也支持写Dao实现类!即DaoImpl
直接上DaoImpl,之前的代码可以参考前面几篇文章。

DaoImpl类

package com.itheima.dao.impl;import com.itheima.dao.IUserDao;
import com.itheima.domain.QueryVo;
import com.itheima.domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;import java.util.List;/*** Created by Administrator on 2019/10/15.*/
public class UserDaoImpl implements IUserDao {private SqlSessionFactory factory;public UserDaoImpl(SqlSessionFactory factory) {this.factory = factory;}@Overridepublic List<User> findAll() {//        1、根据factory获取Sqlsession对象SqlSession sqlSession = factory.openSession();
//        2、调用SqlSession中的方法,实现查询列表List<User> user = sqlSession.selectList("com.itheima.dao.IUserDao.findAll");//参数就是能获取配置信息的keyfor (User use : user) {System.out.println(use);}
//        3、释放资源sqlSession.close();return user;}@Overridepublic void saveUser(User user) {SqlSession sqlSession = factory.openSession();sqlSession.insert("com.itheima.dao.IUserDao.saveUser",user);sqlSession.commit();sqlSession.close();}@Overridepublic void updateUser(User user) {SqlSession sqlSession = factory.openSession();sqlSession.update("com.itheima.dao.IUserDao.updateUser",user);sqlSession.commit();sqlSession.close();}@Overridepublic void deleteUser(Integer userId) {SqlSession sqlSession = factory.openSession();sqlSession.update("com.itheima.dao.IUserDao.deleteUser",userId);sqlSession.commit();sqlSession.close();}@Overridepublic User findById(Integer userId) {SqlSession sqlSession = factory.openSession();User user = sqlSession.selectOne("com.itheima.dao.IUserDao.findById", userId);sqlSession.commit();sqlSession.close();return user;}@Overridepublic List<User> findByName(String username) {SqlSession sqlSession = factory.openSession();
//        2、调用SqlSession中的方法,实现查询列表List<User> user = sqlSession.selectList("com.itheima.dao.IUserDao.findByName",username);//参数就是能获取配置信息的key
//        3、释放资源sqlSession.close();return user;}@Overridepublic int findUserCount() {SqlSession sqlSession = factory.openSession();Integer count = sqlSession.selectOne("com.itheima.dao.IUserDao.findUserCount");return count;}@Overridepublic List<User> findUserByVo(QueryVo vo) {return null;}
}

单元测试

package com.itheima.test;import com.itheima.dao.IUserDao;
import com.itheima.dao.impl.UserDaoImpl;
import com.itheima.domain.QueryVo;
import com.itheima.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.InputStream;
import java.util.Date;
import java.util.List;/*** 测试Mybatis的crud操作*/
public class mybatis {private InputStream in;private IUserDao userDao;@Before //用于在测试方法之前执行public void init() throws Exception {//        1、读取配置文件,生成字节输入流in = Resources.getResourceAsStream("SqlMapConfig.xml");//        2、获取sqlSessionfactorySqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);//        3、使用工厂对象,创建dao对象userDao = new UserDaoImpl(factory);}@After //用于在测试方法之后执行public void destory() throws Exception {in.close();}/*** 测试查询所有*/@Testpublic void findAll() {//     5、执行查询所有方法List<User> users = userDao.findAll();for (User user : users) {System.out.println(user);}}/*** 测试保存操作*/@Testpublic void testSave() {User user = new User();user.setUsername("张XX");user.setAddress("北京 海淀区");user.setSex("男");user.setBirthday(new Date());System.out.println("保存之前"+user);userDao.saveUser(user);System.out.println("保存之后"+user);}/*** 测试更新操作*/@Testpublic void testUpdate() {User user = new User();user.setId(52);user.setUsername("张XXABC");user.setAddress("北京 海淀区");user.setSex("男");user.setBirthday(new Date());userDao.updateUser(user);}/*** 测试删除操作*/@Testpublic void testDelete() {userDao.deleteUser(51);}/*** 测试id查询一个用户*/@Testpublic void testFindById() {//     5、执行查询所有方法User user = userDao.findById(48);System.out.println(user.getId());System.out.println(user.getAddress());System.out.println(user.getBirthday());System.out.println(user.getUsername());}/*** 测试模糊查询*/@Testpublic void testFindByName() {//     5、执行查询所有方法List<User> users = userDao.findByName("%王%");for (User user : users){System.out.println(user);}}/*** 查询用户总个数*/@Testpublic void testFindUserCount(){int count = userDao.findUserCount();System.out.println(count);}@Testpublic void testFindByQueryVo(){QueryVo queryVo = new QueryVo();User user = new User();user.setUsername("%王%");queryVo.setUser(user);List<User> users = userDao.findUserByVo(queryVo);for(User use :users){System.out.println(use);}}
}

Mybatis中使用Dao实现类实现增删改查【实际开发中使用代理dao】相关推荐

  1. Spring Boot入门系列(十八)整合mybatis,使用注解的方式实现增删改查

    之前介绍了Spring Boot 整合mybatis 使用xml配置的方式实现增删改查,还介绍了自定义mapper 实现复杂多表关联查询.虽然目前 mybatis 使用xml 配置的方式 已经极大减轻 ...

  2. java 怎么快速找到实现类_JAVA懒开发:FreeMarker快速实现类的增删改查接口

    太懒,不多说看图,mybatis-generator工具执行后的项目结构 这个时候没得额service接口类,和service实现类,也没的controller类 执行引擎工具类BeanGenerat ...

  3. 数据操作类:增删改查

    一.数据连接类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  4. 如何 增删改查 XML文件中的元素

    如何 增删改查 XML文件中的元素 students.xml 文件如下: <?xml version="1.0" encoding="UTF-8" sta ...

  5. DBUtils工具类实现增删改查

    DBUtils工具类实现增删改查 一.数据库连接池Druid工具类 二.DBUtils实现增删改 三.DBUtils实现查询单条数据 四.DBUtils实现查询批量数据 五.DBUtils实现按键值对 ...

  6. Flask+VUE 实现页面增删改查显示开发+测试(图文教程附源码)

    目录 一.新建项目并初始化 二.安装依赖 axios.elementUI 三.Vue代码 四.进行接口联调 五.后端接口优化 六.web页面功能测试 七.总结 八.展望 九.附录(截止发文时的代码) ...

  7. ORM框架之Mybatis(一)基于mapper配置增删改查

    Mybatis是现在非常流行的SSM框架中的M部分,Mybatis也是一个主流的ORM框架,在项目中用来处理持久层数据. 一.Mybatis框架介绍及使用 1.1 mybatis框架概述: mybat ...

  8. Mybatis入门:2(xml形式的增删改查)

    xml形式的增删改查 这里感觉没啥好讲的,照着代码自己敲一遍.认真再看看应该都懂的. Maven工程坐标 <?xml version="1.0" encoding=" ...

  9. 使用jsp+dao完成注册和增删改查

    目录 1.登录 2.登录成功跳转的页面 3.注册流程 2.将某个表中的信息展示到网页中 4.添加员工信息 5.员工信息的删除 6.员工信息的修改 目录 1.登录 2.登录成功跳转的页面 3.注册流程 ...

最新文章

  1. Go 知识点(15)— 切片长度和容量
  2. 739. Daily Temperatures
  3. CoolPad backdoor CoolReaper
  4. angularjs 1.3 综合学习 (one way bind , ng-if , ng-switch , ng-messages, ng-form ,ng-model )
  5. LSTM实现股票预测--pytorch版本【120+行代码】
  6. Spring Boot中使用Swagger2构建RESTful APIs
  7. NodeJS实现TCPSocket(套接字)服务器和客户端
  8. iostat命令(转)
  9. vue 点击div 获取位置_vue 点击元素滚动到指定位置
  10. java 常用富文本编辑器_常用的六个富文本编辑器
  11. java流程图平行四边形_流程图图形标准含义
  12. ie visio 打开_Visio viewer 不能从IE打开vsd文件
  13. 搞定短视频!批量下载快手视频(附源码)
  14. 小米手机通过USB连接MAC电脑
  15. 基于艾宾浩斯遗忘曲线的APP(大学毕业设计)
  16. ACM模板 | 学习笔记 数学相关
  17. 小程序配置服务器域名
  18. 使用Postfix和Dovecot部署邮件系统
  19. MATLAB实现RSA加密解密
  20. macOS下使用命令行制作 MacOS cdr/iso 镜像文件

热门文章

  1. YUV常用的两种保存方式_YUY2和YV12
  2. King Gym - 102471H
  3. 【学习笔记】信息学竞赛中的概率与期望小结
  4. 数论三之排列组合Ⅱ——Virus Tree 2,RGB Coloring,123 Triangle,排列计数,排队,卡农
  5. CF453C:Little Pony and Summer Sun Celebration(dfs、构造)
  6. YBTOJ:彩球抽取(期望)
  7. 线性筛素数的实现与证明
  8. 2021牛客OI赛前集训营-方格计数【计数,dp】
  9. [科技]Loj#6564-最长公共子序列【bitset】
  10. P5304-[GXOI/GZOI2019]旅行者【最短路】