MyBatis-CRUD

一、准备数据

用户表

角色表

USE `woniu`;
DROP TABLE IF EXISTS `woniu_user`;
CREATE TABLE `woniu_user` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',`userCode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户编码',`userName` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户名称',`userPassword` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户密码',`gender` int(10) DEFAULT NULL COMMENT '性别(1:女、 2:男)',`birthday` date DEFAULT NULL COMMENT '出生日期',`phone` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '手机',`address` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '地址',`userRole` bigint(20) DEFAULT NULL COMMENT '用户角色(取自角色表-角色id)',`createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',`creationDate` datetime DEFAULT NULL COMMENT '创建时间',`modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',`modifyDate` datetime DEFAULT NULL COMMENT '更新时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;insert  into `woniu_user`(`id`,`userCode`,`userName`,`userPassword`,`gender`,`birthday`,`phone`,`address`,`userRole`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`) values (1,'admin','系统管理员','1234567',1,'1983-10-10','13688889999','北京市海淀区成府路207号',1,1,'2013-03-21 16:52:07',NULL,NULL),(2,'liming','李明','0000000',2,'1983-12-10','13688884457','北京市东城区前门东大街9号',2,1,'2014-12-31 19:52:09',NULL,NULL),(5,'hanlubiao','韩路彪','0000000',2,'1984-06-05','18567542321','北京市朝阳区北辰中心12号',2,1,'2014-12-31 19:52:09',NULL,NULL),(6,'zhanghua','张华','0000000',1,'1983-06-15','13544561111','北京市海淀区学院路61号',3,1,'2013-02-11 10:51:17',NULL,NULL),(7,'wangyang','王洋','0000000',2,'1982-12-31','13444561124','北京市海淀区西二旗辉煌国际16层',3,1,'2014-06-11 19:09:07',NULL,NULL),(8,'zhaoyan','赵燕','0000000',1,'1986-03-07','18098764545','北京市海淀区回龙观小区10号楼',3,1,'2016-04-21 13:54:07',NULL,NULL),(10,'sunlei','孙磊','0000000',2,'1981-01-04','13387676765','北京市朝阳区管庄新月小区12楼',3,1,'2015-05-06 10:52:07',NULL,NULL),(11,'sunxing','孙兴','0000000',2,'1978-03-12','13367890900','北京市朝阳区建国门南大街10号',3,1,'2016-11-09 16:51:17',NULL,NULL),(12,'zhangchen','张晨','0000000',1,'1986-03-28','18098765434','朝阳区管庄路口北柏林爱乐三期13号楼',3,1,'2016-08-09 05:52:37',1,'2016-04-14 14:15:36'),(13,'dengchao','邓超','0000000',2,'1981-11-04','13689674534','北京市海淀区北航家属院10号楼',3,1,'2016-07-11 08:02:47',NULL,NULL),(14,'yangguo','杨过','0000000',2,'1980-01-01','13388886623','北京市朝阳区北苑家园茉莉园20号楼',3,1,'2015-02-01 03:52:07',NULL,NULL),(15,'zhaomin','赵敏','0000000',1,'1987-12-04','18099897657','北京市昌平区天通苑3区12号楼',2,1,'2015-09-12 12:02:12',NULL,NULL);DROP TABLE IF EXISTS `woniu_role`;
CREATE TABLE `woniu_role` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',`roleCode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '角色编码',`roleName` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '角色名称',`createdBy` bigint(20) DEFAULT NULL COMMENT '创建者',`creationDate` datetime DEFAULT NULL COMMENT '创建时间',`modifyBy` bigint(20) DEFAULT NULL COMMENT '修改者',`modifyDate` datetime DEFAULT NULL COMMENT '修改时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;insert  into `woniu_role`(`id`,`roleCode`,`roleName`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`) values (1,'woniu_ADMIN','系统管理员',1,'2016-04-13 00:00:00',NULL,NULL),(2,'woniu_MANAGER','经理',1,'2016-04-13 00:00:00',NULL,NULL),(3,'woniu_EMPLOYEE','普通员工',1,'2016-04-13 00:00:00',NULL,NULL);

二、准备实体类 User

public class User {private Integer id; //id private String userCode; //用户编码private String userName; //用户名称private String userPassword; //用户密码private Integer gender;  //性别private Date birthday;  //出生日期private String phone;   //电话private String address; //地址private Integer userRole;    //用户角色private Integer createdBy;   //创建者private Date creationDate; //创建时间private Integer modifyBy;     //更新者private Date modifyDate;   //更新时间//省略get set方法
}

三、准备映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

核心配置文件中引入映射文件

     <mappers><mapper resource="com/woniu/mybatis/dao/UserMapper.xml"/></mappers>

四、CURD

1、查询用户表条数

方法

public interface UserMapper {/*** 查询用户表条数* * @return int*/public int count();}

sql

<mapper namespace="com.woniu.mybatis.dao.UserDao"><!-- 查询用户表记录数查詢使用select标签修改使用update标签添加使用insert标签删除使用delete标签id对应接口名,当前文件不同重复resultType SQL语句返回值类型的完整类名或别名注意SQL语句后面不要分号--><select id="count" resultType="int">select count(1) as count from woniu_user</select>
</mapper>

namespace绑定dao层接口的全路径:namespace的值必须全局唯一

当namespace绑定的是dao接口的全路径时,其实现数据持久化的方式为由代理模式实现数据持久化。

即会自动产生代理,自动实现数据的持久化,不需要实现dao层的接口

测试

@Testpublic void testCount() {//創建sqlSessionSqlSession sqlSession = MyBatisUtil.createSqlSession();//使用sqlSession生成UserDao的代理對象UserDao userDao = sqlSession.getMapper(UserDao.class);//調用方法int count = userDao.count();//輸出System.out.println(count);//關閉連接sqlSession.close();}

每次执行都需要打开连接,关闭连接,代码重复。可以使用Before和After注解

@Before//測試前獲取連接public void init() {sqlSession = MyBatisUtil.createSqlSession();}@After//測試后關閉連接public void destory() {sqlSession.close();}@Testpublic void testCount() {//使用sqlSession生成UserDao的代理對象UserDao userDao = sqlSession.getMapper(UserDao.class);//調用方法int count = userDao.count();//輸出System.out.println(count);}

2、根据id查询用户

方法

/*** 根據ID查询用户* * @return User*/public User getUserById(int userId);

SQL

<!--  根據ID查询用户parameterType 基础数据类型    int、String、Date等 通过#{参数名}即可获取传入的值复杂数据类型      Java实体类、Map等 通过#{属性名}或者#{map的keyName}即可获取传入值--><select id="getUserById" resultType="com.woniu.mybatis.pojo.User" parameterType="int"><!-- 当字段名和返回类型中的属性名一致时会自动映射 如果字段名和属性名不致时,可以给字段取别名-->select userName,userCode from woniu_user where id = #{id}</select>

测试

@Testpublic void testGetUesrById() {User user = sqlSession.getMapper(UserDao.class).getUserById(1);System.out.println(user);}

3、查询所有用户数据

方法

/*** 查詢所有用戶* @return*/List<User> findAllUser();

SQL

<select id="findAllUser" resultType="com.woniu.mybatis.pojo.User">select * from woniu_user</select>

测试

@Testpublic void testFindAllUser() {sqlSession.getMapper(UserDao.class).findAllUser().forEach(System.out::println);}

4、添加用户

方法

/*** 添加用戶* @param user* @return*/int addUser(User user);

SQL

<!-- -->
<insert id="addUser" parameterType="com.woniu.mybatis.pojo.User">insert into woniu_user(userCode,userName) values(#{userCode},#{userName})</insert>

测试

@Testpublic void testAddUser() {User user = new User();user.setUserName("abc");user.setUserCode("abc");sqlSession.getMapper(UserDao.class).addUser(user );}

5、修改用户

方法

/***    根據id修改用戶* @param user* @return*/int updateUser(User user);

SQL

<update id="updateUser" parameterType="com.woniu.mybatis.pojo.User">update woniu_user set userCode=#{userCode},userName=#{userName}where id = #{id}</update>

测试

@Testpublic void testUpdateUser() {User user = new User();user.setUserName("陳老師");user.setUserCode("teacher");user.setId(2);sqlSession.getMapper(UserDao.class).updateUser(user );}

6、删除用户

方法

/*** 根據ID修改用戶* @param userId* @return*/int deleteUser(int userId);

SQL

<delete id="deleteUser" parameterType="int">delete from woniu_user where id = #{id}</delete>

测试

@Testpublic void testDeleteUser() {sqlSession.getMapper(UserDao.class).deleteUser(15);}

7、配置别名

在mybatis-config.xml中加入以下代码

<typeAliases><!-- 配置实体类所在的包后 当映射文件中使用包下的类可以直接写类名且不区分大小写resultType="com.woniu.mybatis.pojo.User" 可以写成resultType="user" 或 resultType="User" (不区分大小写)parameterType javaType type 属性同上
--><package name="com.woniu.mybatis.pojo"/></typeAliases>

五、常见报错

1、接口未注册

2、映射文件中的id重复了

3、方法在mapper映射文件中没有绑定

4、参数为实体类时 没有对应的属性

5、对应的参数找不到

6、返回的结果太多

MyBatis-02-CRUD相关推荐

  1. 2021年3月8日:MyBatis框架学习笔记02:利用MyBatis实现CRUD操作

    MyBatis框架学习笔记02:利用MyBatis实现CRUD操作 在第一节课中我们在UserMapper.xml里定义了两个查询语句:findById和findAll,对应的在UserMapper接 ...

  2. MyBatis-学习笔记05【05.使用Mybatis完成CRUD】

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

  3. MyBatis:CRUD功能

    在前面已经自动生成了mapper和pojo,接下来我们实现mybatis的CRUD功能,先新建service.controller层的方法. 这里的sid是一个开源的id生成类,写完后,我们还需要在启 ...

  4. Mybatis实现CRUD

    1.Mybatis实现CRUD操作 1.CRUD是什么? CRUD:增加(Create).读取查询(Retrieve).更新(Update)和删除(Delete) 查询 查询所有数据 查询详情 条件查 ...

  5. 使用MyBatis实现CRUD操作

    MyBatis 1.使用MyBatis实现CRUD操作 1.1 根据id查询信息 1.2 实现存入用户信息 1.3 更新用户信息 1.4 删除用户信息 1.5 模糊查询 1.6 #{}和${}的区别 ...

  6. Mybatis 02 基础应用

    Mybatis 02 基础应用 一.代码开发demo 1.基于mapper代码开发 1.1.开发方式 ​ 只需要开发Mapper接口和对应的Mapper映射文件,接口定义声明,文件定义sql. 1.2 ...

  7. MyBatis框架学习笔记02:使用MyBatis实现CRUD操作

    文章目录 Ⅰ.查询表记录 (Ⅰ).在映射器配置文件里引入结果映射元素 (Ⅱ).添加按姓名查询用户记录功能 1).在UserMapper.xml里添加映射语句 - findByName 2).在User ...

  8. MyBatis框架学习笔记02:利用MyBatis实现CRUD操作

    文章目录 一.打开MyBatisDemo项目 二.查询表记录 (一)在映射器配置文件里引入结果映射元素 (二)添加按姓名查询用户记录功能 1.在UserMapper.xml里添加映射语句 - find ...

  9. MyBatis基础-CRUD

    一.mybatis  环境搭建步骤 第一步:创建 maven 工程 第二步:导入坐标 第三步:编写必要代码(实体类和持久层接口) 第四步:编写 SqlMapConfig.xml 第五步:编写映射配置文 ...

  10. ADO.NET与ORM的比较(5):MyBatis实现CRUD

    说明:这是一个系列文章,在前面的四篇当中周公分别讲述了利用ADO.NET.NHibernate.Linq to SQL及EntityFramework来实现CRUD功能(C:Create/R:Read ...

最新文章

  1. SAP PP COR2下达工单系统报错说-系统状态APNG是激活的- 分析第二篇
  2. python3占位符 中文_WxString:有没有使用Python 3-占位符实现字符串格式化的C/C++代码?...
  3. MATLAB函数gensurf,matlab模糊逻辑(二)
  4. 2014.11.12模拟赛【最小公倍数】| vijos1047最小公倍数
  5. SAP UI5 Globalization - date format讨论
  6. 使用Java 8.0进行类型安全的依赖注入
  7. eigen 列向量转矩阵_快速入门矩阵运算——开源库Eigen
  8. 服务器查看文件共享记录,服务器共享文件记录
  9. Python的map() 函数
  10. 学生选课系统项目分析-1,架构
  11. html++hint标签,html5新标签总结
  12. Atitit 信息化数据采集与分析解析 技术 处理技术 爬虫与http rest json xml h5解析 db数据库 mail协议与处理 数据压缩与解压 数据处理 文本处理
  13. vb改变字形的代码是什么_求VB中调整字体颜色代码
  14. 犀牛Rhino中Grasshopper插件中的millipede千足虫插件安装方法
  15. android谷歌打印插件下载地址,谷歌浏览器打印插件:Print Plus
  16. SWUST OJ 190: 游程编码
  17. 虚拟机IP地址和主机名称配置
  18. 七、入门python第七课
  19. “wait_for“: 不是 “winrt::impl“ 的成员
  20. vs2013怎么清理解决方案_vs2010/2013项目所在文件夹越来越大如何解决?

热门文章

  1. 可交互绘图-Plotly
  2. python学习笔记之word文档提取
  3. ansible自动化运维工具的详细介绍、使用、工作原理、安装方式、与被管理节点建立信任关系等等
  4. Android Studio 使用Vuforia(高通)开发AR
  5. Web前端开发到底是什么?最通俗易懂的解释了!
  6. c语言12cr,计算机二级C语言讲义12.doc
  7. 阿里云服务器CentOs中安装elasticsearch7.13.1
  8. 使用Git管理SVN
  9. 微信小程序php get_PHP后台实现微信小程序登录
  10. 在计算机的游戏怎样打开,电脑上那个吃鸡游戏怎么打开 | 手游网游页游攻略大全...