新建项目,复制Mybatis的day02_eesy_01mybatisCRUD

1.更改一,删掉QueryVo类,domain(包)下

2.IUserDao接口,删掉findUserByVo方法

3.IUserDao.xml映射文件更改和User实体类属性更改

删掉resultMap相关,并复原实体类和数据表列对应名称

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.dao.IUserDao"><select id="findAll" resultType="com.itheima.domain.User">select * from user;</select><insert id="saveUser" parameterType="com.itheima.domain.User"><selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">select last_insert_id();</selectKey>insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address});</insert><!--更新用户--><update id="updateUser" parameterType="com.itheima.domain.User">update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id};</update><!--删除用户--><delete id="deleteUser" parameterType="INT">delete from user where id=#{userID};</delete><!--根据id查询用户--><select id="findById" parameterType="INT" resultType="com.itheima.domain.User">select * from user where id=#{userId};</select><!--根据名称模糊查询--><select id="findByName" parameterType="string" resultType="com.itheima.domain.User">select * from user where username like #{username};</select><!--获取用户总记录条数--><select id="findTotal" resultType="INT">SELECT COUNT(id) from user;</select>
</mapper>

自定义Dao实现类,findAll方法

1.创建UserDaoImpl实现类,实现IUserDao接口

dao(包)->impl(包)->UserDaoImpl实现类,

public class UserDaoImpl implements IUserDao {private SqlSessionFactory factory;public UserDaoImpl(SqlSessionFactory factory){this.factory=factory;}public List<User> findAll() {//1.根据factory获取SqlSession对象SqlSession session=factory.openSession();//2.掉用SqlSession方法,实现列表查询//参数就是能获取配置信息的key,namespace+方法名(id),自定义实现类替代了代理对象自己掉用selectList方法List<User> users=session.selectList("com.itheima.dao.IUserDao.findAll");//3.释放资源session.close();return users;}}

2.更改MybatisTest测试类

package com.itheima.test;import com.itheima.dao.IUserDao;
import com.itheima.dao.Impl.UserDaoImpl;
import com.itheima.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
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.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;public class MybatisTest {private InputStream in;private IUserDao userDao;//为了避免重复操作,将每次的初始化放到一个方法中@Before//用于在测试方法执行之前执行public void init() throws IOException {//1.读取配置文件in= Resources.getResourceAsStream("SqlMapConfig.xml");//2.获取SqlSessionFactory对象SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);//3.使用工厂对象,创建dao对象userDao=new UserDaoImpl(factory);}//释放资源,放到一个方法中@After//测试方法执行之后执行public void destroy() throws IOException {//6.释放资源in.close();}@Testpublic void testFindAll() throws IOException {//5.执行方法List<User> users = userDao.findAll();for (User user : users) {System.out.println(user);}}
}

3.测试findAll方法

实现保存操作

1.UserDaoImpl实现类

public void saveUser(User user) {//1.根据factory获取SqlSession对象SqlSession session=factory.openSession();//2.掉用SqlSession方法,实现保存//参数就是能获取配置信息的key,namespace+方法名(id)//第一个参数表示用哪个语句执行,第二个语句需要的参数session.insert("com.itheima.dao.IUserDao.saveUser",user);//3.提交事务session.commit();//4.释放资源session.close();}

2.MybatisTest类

//测试保存操作@Testpublic void testSave(){User user=new User();user.setUsername("dao impl user");user.setAddress("北京市顺义区");user.setSex("男");user.setBirthday(new Date());//执行保存方法System.out.println("保存操作之前"+user);userDao.saveUser(user);System.out.println("保存操作之后"+user);}

3.执行结果

 更新操作

1.IUserDaoImpl

public void updateUser(User user) {//1.根据factory获取SqlSession对象SqlSession session=factory.openSession();//2.掉用SqlSession方法,实现更新//参数就是能获取配置信息的key,namespace+方法名(id)//第一个参数表示用哪个语句执行,第二个语句需要的参数session.update("com.itheima.dao.IUserDao.updateUser",user);//3.提交事务session.commit();//4.释放资源session.close();}

2.MybatisTest测试类

 //测试更新操作@Testpublic void testUpdate(){User user=new User();user.setId(50);user.setUsername("userDaoImpl updateuser");user.setAddress("北京市顺义区");user.setSex("女");user.setBirthday(new Date());//执行更新方法userDao.updateUser(user);}

3.执行结果

删除操作

1.UserDaoImpl

 public void deleteUser(Integer userId) {//1.根据factory获取SqlSession对象SqlSession session=factory.openSession();//2.掉用SqlSession方法,实现删除数据//参数就是能获取配置信息的key,namespace+方法名(id)//第一个参数表示用哪个语句执行,第二个语句需要的参数session.delete("com.itheima.dao.IUserDao.deleteUser",userId);//3.提交事务session.commit();//4.释放资源session.close();}

2.MybatisTest

//测试删除操作@Testpublic void testDelete(){//执行删除方法userDao.deleteUser(50);}

3.测试结果

查询一条,模糊查询,总记录数

1.UserDaoImpl实现类

public User findById(Integer userId) {//1.根据factory获取SqlSession对象SqlSession session=factory.openSession();//2.掉用SqlSession方法,实现查询一条数据//参数就是能获取配置信息的key,namespace+方法名(id)User user=session.selectOne("com.itheima.dao.IUserDao.findById",userId);//3.释放资源session.close();return user;}public List<User> findByName(String username) {//1.根据factory获取SqlSession对象SqlSession session=factory.openSession();//2.掉用SqlSession方法,实现查询一条数据//参数就是能获取配置信息的key,namespace+方法名(id)List<User> users=session.selectList("com.itheima.dao.IUserDao.findByName",username);//3.释放资源session.close();return users;}public int findTotal() {//1.根据factory获取SqlSession对象SqlSession session=factory.openSession();//2.掉用SqlSession方法,实现查询一条数据//参数就是能获取配置信息的key,namespace+方法名(id)Integer count=session.selectOne("com.itheima.dao.IUserDao.findTotal");//3.释放资源session.close();return count;}

2.MybatisTest类

//测试查询一个操作@Testpublic void testFindOne(){//执行查询一个方法User user=userDao.findById(48);System.out.println(user);}//测试模糊查询操作@Testpublic void testFindByName(){//执行查询一个方法,在此处提供%进行模糊查询,因为映射文件中未提供List<User> users=userDao.findByName("%王%");//映射文件中提供%,则此处不写%,两种模糊查询的方法//List<User> users=userDao.findByName("王");for (User user:users){System.out.println(user);}}//测试查询总记录数操作@Testpublic void testFindTotal(){//执行查询总记录方法int count=userDao.findTotal();System.out.println(count);}

3.测试结果

 

Mybatis(8)DAO实现类的使用方式相关推荐

  1. MyBatis-学习笔记06【06.使用Mybatis完成DAO层的开发】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  2. Mybatis中使用Dao实现类实现增删改查【实际开发中使用代理dao】

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

  3. MyBatis的Dao层实现方式

    MyBatis的Dao层实现方式 MyBatis的Dao层实现 1.1 传统开发方式 1. 编写UserDao接口 public interface UserDao { List<User> ...

  4. Mybatis(9)Dao实现类和无实现类的执行过程

    findAll方法执行为例 1.执行findAll方法,DefaultSqlSession类 2. CachingExecutor类 3.BaseExecutor类 4.SimpleExecutor类 ...

  5. spring 整合 mybatis 中数据源的几种配置方式

    因为spring 整合mybatis的过程中, 有好几种整合方式,尤其是数据源那块,经常看到不一样的配置方式,总感觉有点乱,所以今天有空总结下. 一.采用org.mybatis.spring.mapp ...

  6. mybatis是什么_深入解析:Mybatis接口没有实现类为什么可以执行增删改查?

    作者:小傅哥 链接:https://segmentfault.com/a/1190000022767561 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言介绍 MyBatis 是一款非常优秀的 ...

  7. 【MyBatis框架】Mybatis开发dao方法第一部分

    下面来讨论mybatis开发Dao的方法 先来说一下基本架构流程中使用到的几个类 1.SqlSession使用范围 1.1SqlSessionFactoryBuilder  通过SqlSessionF ...

  8. Spring整合Mybatis之DAO层、Service层开发

    3. Spring整合Mybatis编程DAO层开发 1. 项目引入相关依赖spring mybatis mysql mybatis-spring druid2. 编写spring.xml整合:spr ...

  9. mysql反模式_myfat: MyFat是MyBatis的DAO功能增强插件

    MyFat让MyBatis更胖 简介 | Intro MyFat是MyBatis的DAO功能增强插件,利用全功能持久层工具jSqlBox来补足MyBatis缺少的功能.MyFat需Java8或以上. ...

最新文章

  1. 友盟页面统计 - 关于Viewpager中的Fragment的生命周期
  2. django中聚合aggregate和annotate GROUP BY的使用方法
  3. SQL Server 数据库所有者
  4. 如何删除Windows 7的保留分区
  5. 《Go语言圣经》学习笔记 第二章 程序结构
  6. 项目管理基础:软件生命周期概念介绍
  7. JxBrowser-JS调用和AJAX数据监听
  8. linux下测硬盘读写速率,linux下测试硬盘读写速度 互联网技术圈 互联网技术圈
  9. java+毕业设计+进销存管理系统+源码+论文.rar
  10. eclipse 装阿里规范模板
  11. 峨眉山徒步休闲三日游攻略内附详细时间
  12. TCSVT论文结构整理
  13. QLExpress入门学习
  14. 《Excel大神上分攻略》学习笔记2——定位、查找、排序、筛选
  15. 链接的接口——符号(一)链接错误:symbol lookup error: xxx, undefined symbol: xxx
  16. MATLAB给多组条形图添加误差棒
  17. 如何做一个一键吸空投箱的效果
  18. 今日参与会议后的感悟
  19. 【循环自相关和循环谱系列6】信号的循环平稳性(循环自相关函数)基本原理及推导
  20. n维椭球体积公式_物质的量浓度计算公式都有什么?

热门文章

  1. BitAdminCore框架更新日志20180529
  2. PHP中cookie和session
  3. MySQL数据库(六) 一一 基本操作之事物和索引
  4. 实现CStack类遇到的问题
  5. AptanaStudio3+PHP程序远程调试的方法和步骤
  6. Delphi TStream 详细介绍
  7. Linux下架设邮件服务器全攻略(二)
  8. java:为什么字符串比较时要用equals方法而不是==运算符
  9. 信息学奥赛一本通(1144:单词翻转)
  10. 信息学奥赛一本通(1068:与指定数字相同的数的个数)