上一篇讲述了MyBatis的快速入门,下面在此基础上进行增删改查的操作:

首先定义dao层的接口:

  1. package com.zy.dao;
  2.  
  3. import com.zy.domain.User;
  4.  
  5. import java.util.List;
  6.  
  7. public interface UserDao {
  8. /**
  9. * 根据id查询用户信息
  10. */
  11. public User getUserById(int id);
  12.  
  13. /**
  14. * 查询所有用户信息
  15. */
  16. public List<User> getUserList();
  17.  
  18. /**
  19. * 添加用户信息
  20. */
  21. public void addUser(User user);
  22.  
  23. /**
  24. * 修改用户信息
  25. */
  26. public void updateUser(User user);
  27.  
  28. /**
  29. * 根据id删除用户信息
  30. */
  31. public void deleteUser(int id);
  32. }

然后编写UserMapper中的sql语句:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <!--
  6. 定义所有用到的sql语句 和 映射关系
  7. namespace : 当前这个配置文件的唯一标识, 自定义, 但是不能和其他配置文件namespace重复
  8. -->
  9. <mapper namespace="userMapper">
  10. <!--
  11. 定义一条sql语句, 其实就是一个 statement
  12. select 代表是查询语句, 与其类似的还有 insert, update, delete等
  13. id : 这条sql语句的唯一标识,自定义,但是不能和其他sql语句重复
  14. parameterType: sql语句需要的参数类型, 需要写 类的全路径
  15. resultType: sql语句返回的结果类型
  16. -->
  17. <select id="getUserById" parameterType="int" resultType="com.zy.domain.User">
  18. <!--这里写具体的sql语句, #{}是占位符, 编译时会被替换成?, 然后注入真实参数-->
  19. select * from user where id=#{id}
  20. </select>
  21. <!--查询所有用户信息-->
  22. <select id="getUserList" resultType="com.zy.domain.User">
  23. select * from user
  24. </select>
  25. <!--添加用户信息-->
  26. <insert id="addUser" parameterType="com.zy.domain.User">
  27. insert into user (id,name,age) values (null,#{name},#{age})
  28. </insert>
  29. <!--修改用户信息-->
  30. <update id="updateUser" parameterType="com.zy.domain.User">
  31. update user set name=#{name}, age=#{age} where id=#{id}
  32. </update>
  33. <!--删除用户信息-->
  34. <delete id="deleteUser" parameterType="int">
  35. delete from user where id=#{id}
  36. </delete>
  37. </mapper>

说一下新增User返回id的写法:

  1. <!--
  2. useGeneratedKeys : 是否开启自增主键的回显功能
  3. keyProperty: 对应javabean的属性名
  4. keyColumn : 对应数据库的列名
  5. -->
  6. <insert id="addUser" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
  7. insert into users values(null,#{username},#{age})
  8. </insert>

最后编写接口实现类:

  1. package com.zy.dao;
  2.  
  3. import com.zy.domain.User;
  4. import org.apache.ibatis.session.SqlSession;
  5.  
  6. import java.util.List;
  7.  
  8. public class UserDaoImpl implements UserDao {
  9.  
  10. private SqlSession sqlSession;
  11.  
  12. //构造函数内传进来一个sqlsession
  13. public UserDaoImpl(SqlSession sqlSession) {
  14. this.sqlSession = sqlSession;
  15. }
  16.  
  17. @Override
  18. public User getUserById(int id) {
  19. return sqlSession.selectOne("userMapper.getUserById", id);
  20. }
  21.  
  22. @Override
  23. public List<User> getUserList() {
  24. return sqlSession.selectList("userMapper.getUserList");
  25. }
  26.  
  27. @Override
  28. public void addUser(User user) {
  29. sqlSession.insert("userMapper.addUser", user);
  30. }
  31.  
  32. @Override
  33. public void updateUser(User user) {
  34. sqlSession.update("userMapper.updateUser", user);
  35. }
  36.  
  37. @Override
  38. public void deleteUser(int id) {
  39. sqlSession.delete("userMapper.deleteUser", id);
  40. }
  41. }

生成UserDao接口的单元测试:

  1. package com.zy.dao;
  2.  
  3. import com.zy.domain.User;
  4. import org.apache.ibatis.session.SqlSession;
  5. import org.apache.ibatis.session.SqlSessionFactory;
  6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  7. import org.junit.Before;
  8. import org.junit.Test;
  9.  
  10. import java.io.InputStream;
  11. import java.util.List;
  12.  
  13. import static org.junit.Assert.*;
  14.  
  15. public class UserDaoTest {
  16. UserDao dao;
  17.  
  18. @Before
  19. public void setUp() throws Exception {
  20. String resource = "mybatis-config.xml";
  21. InputStream inputStream = UserDaoTest.class.getClassLoader().getResourceAsStream(resource);
  22. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  23. SqlSession sqlSession = sqlSessionFactory.openSession(true);
  24. dao = new UserDaoImpl(sqlSession);
  25. }
  26.  
  27. @Test
  28. public void getUserById() throws Exception {
  29. User user = dao.getUserById(1);
  30. System.out.println(user);
  31. }
  32.  
  33. @Test
  34. public void getUserList() throws Exception {
  35. List<User> list = dao.getUserList();
  36. for (User user : list) {
  37. System.out.println(user);
  38. }
  39. }
  40.  
  41. @Test
  42. public void addUser() throws Exception {
  43. User user = new User();
  44. user.setName("张学友");
  45. user.setAge(18);
  46. dao.addUser(user);
  47. }
  48.  
  49. @Test
  50. public void updateUser() throws Exception {
  51. //先查
  52. User user = dao.getUserById(2);
  53. //后改
  54. user.setName("刘德华");
  55. user.setAge(17);
  56. dao.updateUser(user);
  57. }
  58.  
  59. @Test
  60. public void deleteUser() throws Exception {
  61. dao.deleteUser(1);
  62. }
  63.  
  64. }

然后运行单元测试即可。

附上最终的项目结构图:

MyBatis总结二:增删改查的更多相关文章

  1. mybatis入门(二):增删改查

    mybatis的原理: 1.mybatis是一个持久层框架,是apache下的顶级项目 mybatis托管到googlecode下,目前托管到了github下面 2.mybatis可以将向prepar ...

  2. mybatis入门二-----增删改查

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...

  3. MyBatis学习系列二——增删改查

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...

  4. MyBatis简单的增删改查以及简单的分页查询实现

    MyBatis简单的增删改查以及简单的分页查询实现 <? xml version="1.0" encoding="UTF-8"? > <!DO ...

  5. Mybatis入门之增删改查

    Mybatis入门之增删改查 Mybatis如果操作成功,但是数据库没有更新那就是得添加事务了.(增删改都要添加)----- 浪费了我40多分钟怀疑人生后来去百度... 导入包: 引入配置文件: sq ...

  6. MyBatis -- 对表进行增删改查(基于注解的实现)

    1.MyBatis对数据库表进行增/删/改/查 前一篇使用基于XML的方式实现对数据库的增/删/改/查 以下我们来看怎么使用注解的方式实现对数据库表的增/删/改/查 1.1  首先须要定义映射sql的 ...

  7. Spring Boot 使用Mybatis注解开发增删改查

    使用逆向工程是遇到的错误 错误描述 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): c ...

  8. Mybatis实现简单增删改查

    Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...

  9. SpringMVC,MyBatis商品的增删改查

    一.需求 商品的增删改查 二.工程结构 三.代码 1.Mapper层 (1) ItemsMapperCustom.java package com.tony.ssm.mapper; import ja ...

  10. mybatis中的增删改查操作

    在这一个部分,主要进行增删改查的示例书写. 增删改查可以基于xml的,也可以基于注解的方式. 一:对单条数据的查询 1.目录结构 这个使得目录更加清晰 2.User.java 这个使用以前的user表 ...

随机推荐

  1. SPFA算法O(kE)

    SPFA算法O(kE) Dijkstra和Floyed是不断的试点.Dijkstra试最优点,Floyed试所有点. Bellman-Ford和SPFA是不断的试边.Bellman-Ford是盲目的试 ...

  2. SQL Server中的执行引擎入门

      简介 当查询优化器(Query Optimizer)将T-SQL语句解析后并从执行计划中选择最低消耗的执行计划后,具体的执行就会交由执行引擎(Execution Engine)来进行执行.本文旨在 ...

  3. python3 使用pymysql

    #! /usr/bin/env python3 # coding = utf-8 import random import pymysql # 连接数据库函数 def connDB(data): co ...

  4. Linux 系统实时监控 —— Glances

    早些时候,我们提到过有很多可以用来监视系统性能的 Linux 系统监视工具. 但我们估计,或许更多的用户会倾向与绝大多数 Linux 发行版都带的工具 (top 命令). top 命令是 Linux ...

  5. 使用Intellij Idea打开项目不能显示树形目录

    按下列步骤操作:1. 关闭IDEA, 2.然后删除项目文件夹下的.idea文件夹3.重新用IDEA工具打开项目 Open...

  6. BW ON HANA 业务模型关系与数据取数

    在接到业务需求之后,我认为重要的是理清楚自己该做什么.来实现业务.由于不了解业务,还是走了很多弯路.本可以不用这么做,还是这么做了.自然你最傻瓜的按照用户的方式去实现是没有问题的. 会使后面的人难以维 ...

  7. nyoj-451-光棍节的快乐(错排公式)

     题目链接 /* Name:nyoj-451-光棍节的快乐 Copyright: Author: Date: 2018/4/25 16:44:47 Description:D(n)=(n-1)*(D( ...

  8. H国的身份证号码(搜索)

    个人心得:巧妙利用数字进行维护就好了,深搜还是有点心得的: #1558 : H国的身份证号码I 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H国的身份证号码是一个N位 ...

  9. JSplitPane的简单实现

    import java.awt.Color; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.J ...

  10. linux 内核的链表操作(好文不得不转)

    以下全部来自于http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/index.html 无任何个人意见. 本文详细分析了 2.6.x 内 ...