文章目录

  • 一 环境准备
    • 1.1 用到的工具
    • 1.2 用到的数据库源码
  • 三 完整参考内容
    • 3.1 项目结构
    • 3.2 pom.xml文件配置
    • 3.3 mybatis-config.xml文件内容
    • 3.4 db.properties
    • 3.5 MybatisUtils.java文件配置
    • 3.6 实体类
      • 3.6.1 Bill
      • 3.6.2 Provider
      • 3.6.3 Role
      • 3.6.4 User
    • 3.7 Bill相关练习题
      • 3.7.1 Bill接口
      • 3.7.2 BillMapper.xml文件
      • 3.7.3 Bill测试
    • 3.8 Provider相关练习
      • 3.8.1 Provider接口
      • 3.8.2 ProviderMapper.xml文件
      • 3.8.3 Provider测试
    • 3.9 RoleMapper相关练习
      • 3.9.1 Role接口
      • 3.9.2 RoleMapper.xml文件
      • 3.9.3 Role测试
    • 3.10 User相关练习
      • 3.10.1 User接口
      • 3.10.2 UserMapper.xml文件
      • 3.10.3 User测试
  • 写下本文的意义:在于可以为正在学习Mybatis动态SQL的同学提供一些资料和参考答案
  • 手握命运,面向未来!星光不负赶路人!

一 环境准备

1.1 用到的工具

  • IDEA
  • Lombok插件
  • Mysql数据库
  • maven环境

1.2 用到的数据库源码

`smbms_provider``smbms_bill`CREATE TABLE `teacher` (
`id` INT(10) NOT NULL,
`name` VARCHAR(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;INSERT INTO teacher(`id`, `name`) VALUES (1, '秦老师');CREATE TABLE `student` (
`id` INT(10) NOT NULL,
`name` VARCHAR(30) DEFAULT NULL,
`tid` INT(10) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fktid` (`tid`),
CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('1', '小明', '1');
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('2', '小红', '1');
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('3', '小张', '1');
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('4', '小李', '1');
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('5', '小王', '1');CREATE TABLE `blog` (
`id` VARCHAR(50) NOT NULL COMMENT '博客id',
`title` VARCHAR(100) NOT NULL COMMENT '博客标题',
`author` VARCHAR(30) NOT NULL COMMENT '博客作者',
`create_time` DATETIME NOT NULL COMMENT '创建时间',
`views` INT(30) NOT NULL COMMENT '浏览量'
) ENGINE=INNODB DEFAULT CHARSET=utf8;CREATE DATABASE smbms;
USE `smbms`;DROP TABLE IF EXISTS `smbms_address`;CREATE TABLE `smbms_address` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',`contact` VARCHAR(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '联系人姓名',`addressDesc` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '收货地址明细',`postCode` VARCHAR(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '邮编',`tel` VARCHAR(20) 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 '修改时间',`userId` BIGINT(20) DEFAULT NULL COMMENT '用户ID',PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;INSERT  INTO `smbms_address`(`id`,`contact`,`addressDesc`,`postCode`,`tel`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`,`userId`)
VALUES (1,'王丽','北京市东城区东交民巷44号','100010','13678789999',1,'2016-04-13 00:00:00',NULL,NULL,1),
(2,'张红丽','北京市海淀区丹棱街3号','100000','18567672312',1,'2016-04-13 00:00:00',NULL,NULL,1),
(3,'任志强','北京市东城区美术馆后街23号','100021','13387906742',1,'2016-04-13 00:00:00',NULL,NULL,1),
(4,'曹颖','北京市朝阳区朝阳门南大街14号','100053','13568902323',1,'2016-04-13 00:00:00',NULL,NULL,2),
(5,'李慧','北京市西城区三里河路南三巷3号','100032','18032356666',1,'2016-04-13 00:00:00',NULL,NULL,3),
(6,'王国强','北京市顺义区高丽营镇金马工业区18号','100061','13787882222',1,'2016-04-13 00:00:00',NULL,NULL,3);DROP TABLE IF EXISTS `smbms_bill`;CREATE TABLE `smbms_bill` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',`billCode` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '账单编码',`productName` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品名称',`productDesc` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品描述',`productUnit` VARCHAR(10) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品单位',`productCount` DECIMAL(20,2) DEFAULT NULL COMMENT '商品数量',`totalPrice` DECIMAL(20,2) DEFAULT NULL COMMENT '商品总额',`isPayment` INT(10) DEFAULT NULL COMMENT '是否支付(1:未支付 2:已支付)',`createdBy` BIGINT(20) DEFAULT NULL COMMENT '创建者(userId)',`creationDate` DATETIME DEFAULT NULL COMMENT '创建时间',`modifyBy` BIGINT(20) DEFAULT NULL COMMENT '更新者(userId)',`modifyDate` DATETIME DEFAULT NULL COMMENT '更新时间',`providerId` BIGINT(20) DEFAULT NULL COMMENT '供应商ID',PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;INSERT  INTO `smbms_bill`(`id`,`billCode`,`productName`,`productDesc`,`productUnit`,`productCount`,
`totalPrice`,`isPayment`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`,`providerId`)
VALUES (2,'BILL2016_002','香皂、肥皂、药皂','日用品-皂类','块','1000.00','10000.00',2,1,'2016-03-23 04:20:40',NULL,NULL,13),
(3,'BILL2016_003','大豆油','食品-食用油','斤','300.00','5890.00',2,1,'2014-12-14 13:02:03',NULL,NULL,6),
(4,'BILL2016_004','橄榄油','食品-进口食用油','斤','200.00','9800.00',2,1,'2013-10-10 03:12:13',NULL,NULL,7),
(5,'BILL2016_005','洗洁精','日用品-厨房清洁','瓶','500.00','7000.00',2,1,'2014-12-14 13:02:03',NULL,NULL,9),
(6,'BILL2016_006','美国大杏仁','食品-坚果','袋','300.00','5000.00',2,1,'2016-04-14 06:08:09',NULL,NULL,4),
(7,'BILL2016_007','沐浴液、精油','日用品-沐浴类','瓶','500.00','23000.00',1,1,'2016-07-22 10:10:22',NULL,NULL,14),
(8,'BILL2016_008','不锈钢盘碗','日用品-厨房用具','个','600.00','6000.00',2,1,'2016-04-14 05:12:13',NULL,NULL,14),
(9,'BILL2016_009','塑料杯','日用品-杯子','个','350.00','1750.00',2,1,'2016-02-04 11:40:20',NULL,NULL,14),
(10,'BILL2016_010','豆瓣酱','食品-调料','瓶','200.00','2000.00',2,1,'2013-10-29 05:07:03',NULL,NULL,8),
(11,'BILL2016_011','海之蓝','饮料-国酒','瓶','50.00','10000.00',1,1,'2016-04-14 16:16:00',NULL,NULL,1),
(12,'BILL2016_012','芝华士','饮料-洋酒','瓶','20.00','6000.00',1,1,'2016-09-09 17:00:00',NULL,NULL,1),
(13,'BILL2016_013','长城红葡萄酒','饮料-红酒','瓶','60.00','800.00',2,1,'2016-11-14 15:23:00',NULL,NULL,1),
(14,'BILL2016_014','泰国香米','食品-大米','斤','400.00','5000.00',2,1,'2016-10-09 15:20:00',NULL,NULL,3),
(15,'BILL2016_015','东北大米','食品-大米','斤','600.00','4000.00',2,1,'2016-11-14 14:00:00',NULL,NULL,3),
(16,'BILL2016_016','可口可乐','饮料','瓶','2000.00','6000.00',2,1,'2012-03-27 13:03:01',NULL,NULL,2),
(17,'BILL2016_017','脉动','饮料','瓶','1500.00','4500.00',2,1,'2016-05-10 12:00:00',NULL,NULL,2),
(`smbms_provider`);DROP TABLE IF EXISTS `smbms_provider`;CREATE TABLE `smbms_provider` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',`proCode` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商编码',`proName` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商名称',`proDesc` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商详细描述',`proContact` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商联系人',`proPhone` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '联系电话',`proAddress` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '地址',`proFax` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '传真',`createdBy` BIGINT(20) DEFAULT NULL COMMENT '创建者(userId)',`creationDate` DATETIME DEFAULT NULL COMMENT '创建时间',`modifyDate` DATETIME DEFAULT NULL COMMENT '更新时间',`modifyBy` BIGINT(20) DEFAULT NULL COMMENT '更新者(userId)',PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;INSERT  INTO `smbms_provider`(`id`,`proCode`,`proName`,`proDesc`,`proContact`,`proPhone`,`proAddress`,`proFax`,
`createdBy`,`creationDate`,`modifyDate`,`modifyBy`)
VALUES (1,'BJ_GYS001','北京三木堂商贸有限公司','长期合作伙伴,主营产品:茅台、五粮液、郎酒、酒鬼酒、泸州老窖、赖茅酒、法国红酒等','张国强','13566667777','北京市丰台区育芳园北路','010-58858787',1,'2013-03-21 16:52:07',NULL,NULL),
(2,'HB_GYS001','石家庄帅益食品贸易有限公司','长期合作伙伴,主营产品:饮料、水饮料、植物蛋白饮料、休闲食品、果汁饮料、功能饮料等','王军','13309094212','河北省石家庄新华区','0311-67738876',1,'2016-04-13 04:20:40',NULL,NULL),
(3,'GZ_GYS001','深圳市泰香米业有限公司','初次合作伙伴,主营产品:良记金轮米,龙轮香米等','郑程瀚','13402013312','广东省深圳市福田区深南大道6006华丰大厦','0755-67776212',1,'2014-03-21 16:56:07',NULL,NULL),
(4,'GZ_GYS002','深圳市喜来客商贸有限公司','长期合作伙伴,主营产品:坚果炒货.果脯蜜饯.天然花茶.营养豆豆.特色美食.进口食品.海味零食.肉脯肉','林妮','18599897645','广东省深圳市福龙工业区B2栋3楼西','0755-67772341',1,'2013-03-22 16:52:07',NULL,NULL),
(5,'JS_GYS001','兴化佳美调味品厂','长期合作伙伴,主营产品:天然香辛料、鸡精、复合调味料','徐国洋','13754444221','江苏省兴化市林湖工业区','0523-21299098',1,'2015-11-22 16:52:07',NULL,NULL),
(6,'BJ_GYS002','北京纳福尔食用油有限公司','长期合作伙伴,主营产品:山茶油、大豆油、花生油、橄榄油等','马莺','13422235678','北京市朝阳区珠江帝景1号楼','010-588634233',1,'2012-03-21 17:52:07',NULL,NULL),
(7,'BJ_GYS003','北京国粮食用油有限公司','初次合作伙伴,主营产品:花生油、大豆油、小磨油等','王驰','13344441135','北京大兴青云店开发区','010-588134111',1,'2016-04-13 00:00:00',NULL,NULL),
(8,'ZJ_GYS001','慈溪市广和绿色食品厂','长期合作伙伴,主营产品:豆瓣酱、黄豆酱、甜面酱,辣椒,大蒜等农产品','薛圣丹','18099953223','浙江省宁波市慈溪周巷小安村','0574-34449090',1,'2013-11-21 06:02:07',NULL,NULL),
(9,'GX_GYS001','优百商贸有限公司','长期合作伙伴,主营产品:日化产品','李立国','13323566543','广西南宁市秀厢大道42-1号','0771-98861134',1,'2013-03-21 19:52:07',NULL,NULL),
(10,'JS_GYS002','南京火头军信息技术有限公司','长期合作伙伴,主营产品:不锈钢厨具等','陈女士','13098992113','江苏省南京市浦口区浦口大道1号新城总部大厦A座903室','025-86223345',1,'2013-03-25 16:52:07',NULL,NULL),
(11,'GZ_GYS003','广州市白云区美星五金制品厂','长期合作伙伴,主营产品:海绵床垫、坐垫、靠垫、海绵枕头、头枕等','梁天','13562276775','广州市白云区钟落潭镇福龙路20号','020-85542231',1,'2016-12-21 06:12:17',NULL,NULL),
(12,'BJ_GYS004','北京隆盛日化科技','长期合作伙伴,主营产品:日化环保清洗剂,家居洗涤专卖、洗涤用品网、墙体除霉剂、墙面霉菌清除剂等','孙欣','13689865678','北京市大兴区旧宫','010-35576786',1,'2014-11-21 12:51:11',NULL,NULL),
(13,'SD_GYS001','山东豪克华光联合发展有限公司','长期合作伙伴,主营产品:洗衣皂、洗衣粉、洗衣液、洗洁精、消杀类、香皂等','吴洪转','13245468787','山东济阳济北工业区仁和街21号','0531-53362445',1,'2015-01-28 10:52:07',NULL,NULL),
(14,'JS_GYS003','无锡喜源坤商行','长期合作伙伴,主营产品:日化品批销','周一清','18567674532','江苏无锡盛岸西路','0510-32274422',1,'2016-04-23 11:11:11',NULL,NULL),
(15,'ZJ_GYS002','乐摆日用品厂','长期合作伙伴,主营产品:各种中、高档塑料杯,塑料乐扣水杯(密封杯)、保鲜杯(保鲜盒)、广告杯、礼品杯','王世杰','13212331567','浙江省金华市义乌市义东路','0579-34452321',1,'2016-08-22 10:01:30',NULL,NULL);DROP TABLE IF EXISTS `smbms_role`;CREATE TABLE `smbms_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 `smbms_role`(`id`,`roleCode`,`roleName`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`)
VALUES (1,'SMBMS_ADMIN','系统管理员',1,'2016-04-13 00:00:00',NULL,NULL),
(2,'SMBMS_MANAGER','经理',1,'2016-04-13 00:00:00',NULL,NULL),
(3,'SMBMS_EMPLOYEE','普通员工',1,'2016-04-13 00:00:00',NULL,NULL);DROP TABLE IF EXISTS `smbms_user`;CREATE TABLE `smbms_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 `smbms_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);CREATE DATABASE `ssmbuild`;
USE `ssmbuild`;
DROP TABLE IF EXISTS `books`;
CREATE TABLE `books` (
`bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id',
`bookName` VARCHAR(100) NOT NULL COMMENT '书名',
`bookCounts` INT(11) NOT NULL COMMENT '数量',
`detail` VARCHAR(200) NOT NULL COMMENT '描述',
KEY `bookID` (`bookID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;INSERT INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES
(1,'Java',1,'从入门到放弃'),
(2,'MySQL',10,'从删库到跑路'),
(3,'Linux',5,'从进门到进牢');

三 完整参考内容

  • 练习之前创建maven项目,并确保成功连接到数据库

3.1 项目结构

  • 这里采用图片展示的方式来说明

3.2 pom.xml文件配置

  • 注意版本的兼容问题
<build><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources>
</build><dependencies><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!--mybatis--><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><!--<scope>test</scope>--></dependency><!--lombok插件 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version><scope>provided</scope></dependency>
</dependencies>

3.3 mybatis-config.xml文件内容

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration核心配置文件-->
<configuration><!--导入properties文件--><properties resource="db.properties"/><!--标准的日志工厂 STDOUT_LOGGING 标准日志输出--><settings><setting name="logImpl" value="STDOUT_LOGGING"/><!--是否开启自动驼峰名规则(caml case)映射--><setting name="mapUnderscoreToCamelCase" value="true"/></settings><!--给实体类起别名:包扫描,官方推荐首字母小写的名字Student->student--><typeAliases><package name="com.yang.pojo"/></typeAliases><environments default="development"><environment id="development"><!--事务管理--><transactionManager type="JDBC"/><!--配置数据源--><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><package name="com.yang.dao"/></mappers>
</configuration>

3.4 db.properties

  • driver和url的内容在连接Mysql5.0和Mysql8.0有所不同
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/smbms?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username=root
password=xxxxx

3.5 MybatisUtils.java文件配置

  • SqlSessionFactory–>SqlSession
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 java.io.IOException;
import java.io.InputStream;/*** @author 缘友一世* @date 2022/7/20-16:49*/
//SqlSessionFactory-->SqlSession
public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory;static {try {//使用mybatis获取SqlSessionFactory对象String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。// 你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句public static SqlSession getSession(){//设置自动提交事务return sqlSessionFactory.openSession(true);}
}

3.6 实体类

  • 注意和数据库的属性对应

3.6.1 Bill

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.math.BigDecimal;
import java.sql.Date;/*** @author 缘友一世* @date 2022/7/23-14:46*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Bill {private Integer id;   //idprivate String billCode; //账单编码private String productName; //商品名称private String productDesc; //商品描述private String productUnit; //商品单位private BigDecimal productCount; //商品数量private BigDecimal totalPrice; //总金额private Integer isPayment; //是否支付private Integer providerId; //供应商IDprivate Integer createdBy; //创建者private Date creationDate; //创建时间private Integer modifyBy; //更新者private Date modifyDate;//更新时间private String providerName;//供应商名称
}

3.6.2 Provider

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.sql.Date;/*** @author 缘友一世* @date 2022/7/23-14:49*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Provider {private Integer id;   //idprivate String proCode; //供应商编码private String proName; //供应商名称private String proDesc; //供应商描述private String proContact; //供应商联系人private String proPhone; //供应商电话private String proAddress; //供应商地址private String proFax; //供应商传真private Integer createdBy; //创建者private Date creationDate; //创建时间private Date modifyDate;//更新时间private Integer modifyBy; //更新者
}

3.6.3 Role

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.sql.Date;/*** @author 缘友一世* @date 2022/7/23-14:50*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Role {private Integer id;   //idprivate String roleCode; //角色编码private String roleName; //角色名称private Integer createdBy; //创建者private Date creationDate; //创建时间private Integer modifyBy; //更新者private Date modifyDate;//更新时间
}

3.6.4 User

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.sql.Date;/*** @author 缘友一世* @date 2022/7/23-14:52*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private Integer id; //idprivate 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;   //更新时间private Integer age;//年龄private String userRoleName;    //用户角色名称
}

3.7 Bill相关练习题

3.7.1 Bill接口


import com.yang.pojo.Bill;
import org.apache.ibatis.annotations.Param;import java.math.BigInteger;
import java.util.List;/*** @author 缘友一世* @date 2022/7/23-14:53*/
public interface BillMapper {/*** 根据供应商Id查询订单数量*/int getBillCountByProviderId(@Param("providerId") Integer providerId);/*** 增加订单*/int add(Bill bill);/*** 通过查询条件获取供应商列表-getBillList*/List<Bill> getBillList(@Param("productName") String productName,@Param("providerId") String providerId,@Param("isPayment") String isPayment,@Param("from") Integer from,@Param("pageSize") Integer pageSize);/*** 通过条件查询,查询供货商数量* 根据 商品名称、供应商id、是否付款 查询订单总数*/int getBillCount(@Param("productName") String productName,@Param("providerId") int providerId,@Param("isPayment") int isPayment);/*** 通过Id删除Bill*/int deleteBillById(@Param("id") Integer id);/*** 通过Id获取Bill*/Bill getBillById(@Param("id") Integer id);/*** 修改订单信息*/int modify(Bill bill);/*** 根据供应商Id删除订单信息*/int deleteBillByProviderId(@Param("providerId") Integer providerId);}

3.7.2 BillMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yang.dao.Bill.BillMapper"><!--根据供应商Id查询订单数量--><select id="getBillCountByProviderId" resultType="java.lang.Integer" parameterType="integer">select count(*) from smbms_bill where providerId=#{providerId};</select><insert id="add" parameterType="bill" >insert into smbms.smbms_bill (id,billCode,productName,productDesc,productUnit,productCount,totalPrice,isPayment,providerId,createdBy,creationDate)values(#{id},#{billCode},#{productName},#{productDesc},#{productUnit},#{productCount},#{totalPrice},#{isPayment},#{providerId},#{createdBy},#{creationDate})</insert><!--通过条件查询,查询供货商数量,模糊查询--><select id="getBillList" resultType="bill">select * from smbms.smbms_bill<where><if test="productName !=null">and productName like concat ('%',#{productName},'%')</if><if test="providerId !=null">and providerId like concat('%',#{providerId},'%')</if><if test="isPayment !=null">and isPayment like concat ('%',#{isPayment},'%')</if></where>limit #{from},#{pageSize}</select><select id="getBillCount" resultType="int">select count(1) from smbms_bill b,smbms_provider p<where>b.providerId=p.id<if test="productName != null and productName != ''">and productName like concat ('%',#{productName},'%')</if><if test="providerId != null">and providerId = #{providerId}</if><if test="isPayment != null">and isPayment = #{isPayment}</if></where></select><delete id="deleteBillById" parameterType="Integer">delete from smbms_bill where id=#{id}</delete><select id="getBillById" parameterType="Integer" resultType="bill">select * from smbms_bill where id=#{id}</select><update id="modify" parameterType="bill">update smbms_bill<set><if test="productName!=null">productName=#{productName}</if></set><where>id=#{id}</where></update><delete id="deleteBillByProviderId" parameterType="Integer">delete from smbms_bill<where>providerId=#{providerId}</where></delete>
</mapper>

3.7.3 Bill测试

import com.yang.dao.Bill.BillMapper;
import com.yang.pojo.Bill;
import com.yang.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;import java.math.BigDecimal;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;/*** @author 缘友一世* @date 2022/7/23-15:07*/
public class TestBillMapper {@Testpublic void getBillCountByProviderId() {SqlSession sqlSession = MybatisUtils.getSession();BillMapper mapper = sqlSession.getMapper(BillMapper.class);int res = mapper.getBillCountByProviderId(2);System.out.println("该供应商的订单数量为:"+res);sqlSession.close();}@Testpublic void add() {SqlSession sqlSession = MybatisUtils.getSession();BillMapper mapper = sqlSession.getMapper(BillMapper.class);Bill bill = new Bill();bill.setId(19);bill.setBillCode("BILL2016_019");bill.setProductName("香飘飘");bill.setProductDesc("饮料");bill.setProductUnit("瓶");bill.setProductCount(BigDecimal.valueOf(3000.00));bill.setTotalPrice(BigDecimal.valueOf(6000.00));bill.setIsPayment(2);bill.setCreatedBy(1);bill.setProviderId(2);int res = mapper.add(bill);if(res>0) {System.out.println("插入成功");}sqlSession.close();}//模糊查询@Testpublic void getBillList()throws Exception{SqlSession sqlSession = MybatisUtils.getSession();BillMapper mapper = sqlSession.getMapper(BillMapper.class);List<Bill> billList = mapper.getBillList("油", "1", "1", 0,2);for (Bill bill : billList) {System.out.println(bill);}sqlSession.close();}@Testpublic void getBillCount() {SqlSession sqlSession = MybatisUtils.getSession();BillMapper mapper = sqlSession.getMapper(BillMapper.class);int billCount = mapper.getBillCount("安",2,2);System.out.println("供货商数量为:"+billCount);sqlSession.close();}//删除@Testpublic void deleteBillById() {SqlSession sqlSession = MybatisUtils.getSession();BillMapper mapper = sqlSession.getMapper(BillMapper.class);int res = mapper.deleteBillById(19);if(res>0) {System.out.println("删除成功!");}sqlSession.close();}//查询 getBillById@Testpublic void getBillById() {SqlSession sqlSession = MybatisUtils.getSession();BillMapper mapper = sqlSession.getMapper(BillMapper.class);Bill bill = mapper.getBillById(19);System.out.println(bill);sqlSession.close();}//修改@Testpublic void modify() {SqlSession sqlSession = MybatisUtils.getSession();BillMapper mapper = sqlSession.getMapper(BillMapper.class);Bill bill = new Bill();bill.setProductName("安慕希");bill.setId(19);mapper.modify(bill);sqlSession.close();}@Testpublic void deleteBillByProviderId() {SqlSession sqlSession = MybatisUtils.getSession();BillMapper mapper = sqlSession.getMapper(BillMapper.class);int res = mapper.deleteBillByProviderId(20);if( res>0) {System.out.println("删除成功!");}sqlSession.close();}
}

3.8 Provider相关练习

3.8.1 Provider接口

import com.yang.pojo.Provider;
import org.apache.ibatis.annotations.Param;import java.util.List;/*** @author 缘友一世* @date 2022/7/23-14:57*/
public interface ProviderMapper {//增加用户信息int add( Provider provider);//通过条件查询providerListList<Provider> getProviderList(@Param("proName") String proName,@Param("proCode") String proCode,@Param("from") Integer currentPageNo,@Param("pageSize") Integer pageSize);//获取供应商列表List<Provider> getProList();//通过条件查询供应商记录数int getProviderCount(@Param("proName") String proName,@Param("proCode") String proCode);//通过供应商Id删除供应商信息int deleteProviderById(@Param("id") Integer delId);//根据供应商Id获取供应商信息Provider getProviderById(@Param("id") Integer id);//修改供应商int modify(Provider provider);
}

3.8.2 ProviderMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yang.dao.Provider.ProviderMapper"><insert id="add" parameterType="provider">insert into smbms_provider(proCode,proName,proDesc,proContact,proPhone,proAddress,proFax,createdBy,creationDate)values(#{proCode},#{proName},#{proDesc},#{proContact},#{proPhone},#{proAddress},#{proFax},#{createdBy},#{creationDate})</insert><select id="getProviderList" parameterType="String" resultType="provider">select * from smbms.smbms_provider<where><if test="proName !=null">and proName like concat('%',#{proName},'%')</if><if test="proCode !=null">and proCode like concat ('%',#{proCode},'%')</if></where></select><select id="getProList" resultType="Provider">select * from smbms_provider;</select><select id="getProviderCount" resultType="Integer">select count(1) from smbms_provider<where><if test="proName != null">proName like CONCAT('%',#{proName},'%')</if><if test="proCode != null">and proCode like CONCAT('%',#{proCode},'%')</if></where></select><delete id="deleteProviderById">delete from smbms_provider where id=#{id};</delete><select id="getProviderById" resultType="Provider">select * from smbms_provider where id = #{id}</select><update id="modify" parameterType="provider">update smbms_provider<trim prefix="set" suffixOverrides="," suffix="where id=#{id}"><if test="proName!=null">proName=#{proName},</if><if test="proCode!=null">proCode=#{proCode},</if><if test="proDesc!=null">proDesc=#{proDesc},</if><if test="proContact!=null">proContact=#{proContact},</if><if test="proPhone!=null">proPhone=#{proPhone},</if><if test="proAddress!=null">proAddress=#{proAddress},</if><if test="proFax!=null">proFax=#{proFax},</if><if test="createdBy!=null">createdBy=#{createdBy},</if><if test="creationDate!=null">creationDate=#{creationDate},</if><if test="modifyDate!=null">modifyDate=#{modifyDate},</if><if test="modifyBy!=null">modifyBy=#{modifyBy}</if></trim></update>
</mapper>

3.8.3 Provider测试

/*** @author 缘友一世* @date 2022/7/23-15:07*/
public class TestProviderMapper {@Testpublic void add() {SqlSession sqlSession = MybatisUtils.getSession(); ProviderMapper mapper = sqlSession.getMapper(ProviderMapper.class);Provider provider = new Provider(21,"ZJ_GYS002","乐摆日用品厂2","长期合作伙伴,主营产品:2","王世杰","13212331567","浙江省金华市义乌市义东路","0579-34452321",1,null,null,null);mapper.add(provider);sqlSession.close();}@Testpublic void getProviderList(){SqlSession sqlSession = MybatisUtils.getSession();ProviderMapper mapper = sqlSession.getMapper(ProviderMapper.class);/*Provider provider = new Provider();provider.setProName("张");provider.setProCode("新");*/List<Provider> providerList = mapper.getProviderList("日","00",null,null);for (Provider provider : providerList) {System.out.println(provider);}sqlSession.close();}@Testpublic void getProList() {SqlSession sqlSession = MybatisUtils.getSession();ProviderMapper mapper = sqlSession.getMapper(ProviderMapper.class);List<Provider> proLists = mapper.getProList();for(Provider provider:proLists) {System.out.println(provider);}sqlSession.close();}@Testpublic void getProviderCount(){SqlSession session = MybatisUtils.getSession();ProviderMapper mapper = session.getMapper(ProviderMapper.class);int providerCount = mapper.getProviderCount("深圳", "GZ");System.out.println(providerCount);session.close();}@Testpublic void deleteProviderById(){SqlSession session = MybatisUtils.getSession();ProviderMapper mapper = session.getMapper(ProviderMapper.class);mapper.deleteProviderById(17);session.close();}@Testpublic void getProviderById(){SqlSession session = MybatisUtils.getSession();ProviderMapper mapper = session.getMapper(ProviderMapper.class);mapper.getProviderById(16);session.close();}@Testpublic void modify() {SqlSession session = MybatisUtils.getSession();ProviderMapper mapper = session.getMapper(ProviderMapper.class);mapper.modify(new Provider(16,"ZJ_GYS002","安徽皮革厂",null,null,null,null,null,null,null,null,null));session.close();}}

3.9 RoleMapper相关练习

3.9.1 Role接口

import com.yang.pojo.Role;
import org.apache.ibatis.annotations.Param;import java.util.List;/*** @author 缘友一世* @date 2022/7/23-15:02*/
public interface RoleMapper {//获取角色列表List<Role> getRoleList();//增加角色信息int add(Role role);//通过Id删除Roleint deleteRoleById(@Param("id") Integer delId);//修改角色信息int modify(Role role);//通过Id获取roleRole getRoleById(@Param("id") Integer id);//根据roleCode,进行角色编码的唯一性验证int roleCodeIsExist(@Param("roleCode") String roleCode);
}

3.9.2 RoleMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yang.dao.Role.RoleMapper"><select id="getRoleList" resultType="Role">select * from smbms_role;</select><insert id="add" parameterType="Role">insert into smbms_role values (#{id},#{roleCode},#{roleName},#{createdBy},#{creationDate},#{modifyBy},#{modifyDate});</insert><delete id="deleteRoleById" parameterType="Integer">delete from smbms_role where id = #{id};</delete><update id="modify" parameterType="Role">update smbms_role<set><if test="roleCode != null">roleCode=#{roleCode},</if><if test="roleName != null">roleName=#{roleName},</if><if test="createdBy != null">createdBy=#{createdBy},</if><if test="creationDate != null">creationDate=#{creationDate},</if><if test="modifyBy != null">modifyBy=#{modifyBy},</if><if test="modifyDate != null">modifyDate=#{modifyDate}</if></set>where id = #{id}</update><select id="getRoleById" resultType="Role">select * from smbms_role where id = #{id};</select><select id="roleCodeIsExist" parameterType="String" resultType="Integer">select count(*) from smbms_role where roleCode=#{roleCode}</select></mapper>

3.9.3 Role测试

import com.yang.dao.Role.RoleMapper;
import com.yang.pojo.Role;
import com.yang.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.sql.Date;
import java.util.List;/*** @author 缘友一世* @date 2022/7/23-15:08*/
public class TestRoleMapper {/*测试一*/@Testpublic void getRoleList(){SqlSession session = MybatisUtils.getSession();RoleMapper mapper = session.getMapper(RoleMapper.class);List<Role> roleList = mapper.getRoleList();for (Role role : roleList) {System.out.println(role);}session.close();}@Testpublic void add() {SqlSession session = MybatisUtils.getSession();RoleMapper mapper = session.getMapper(RoleMapper.class);mapper.add(new Role(4,"SMBMS_Boss","老板",1, null,null,null));session.close();}@Testpublic void deleteRoleById(){SqlSession session = MybatisUtils.getSession();RoleMapper mapper = session.getMapper(RoleMapper.class);mapper.deleteRoleById(4);session.close();}@Testpublic void modify()  {SqlSession session = MybatisUtils.getSession();RoleMapper mapper = session.getMapper(RoleMapper.class);mapper.modify(new Role(1,null,null,null,null,2, null));session.close();}@Testpublic void getRoleById(){SqlSession session = MybatisUtils.getSession();RoleMapper mapper = session.getMapper(RoleMapper.class);Role role = mapper.getRoleById(2);System.out.println(role);session.close();}@Testpublic void roleCodeIsExist(){SqlSession session = MybatisUtils.getSession();RoleMapper mapper = session.getMapper(RoleMapper.class);int i = mapper.roleCodeIsExist("SMBMS_ADMIN");System.out.println(i);session.close();}}

3.10 User相关练习

3.10.1 User接口

package com.yang.dao.User;import com.yang.pojo.User;
import org.apache.ibatis.annotations.Param;import java.util.HashMap;
import java.util.List;/*** @author 缘友一世* @date 2022/7/23-15:04*/
public interface UserMapper {//通过userCode获取Userpublic User getLoginUser(@Param("userCode") String userCode);//增加用户信息public int add(HashMap<String, Object> map);//通过条件查询userListpublic List<User> getUserList(@Param("userName") String userName,@Param("userRole") Integer userRole,@Param("from") Integer from,@Param("pageSize") Integer pageSize);//通过条件查询-用户记录数public int getUserCount(@Param("userName") String userName,@Param("userRole") Integer userRole);//通过userId删除userpublic int deleteUserById(@Param("id") Integer id);//通过useId获取userpublic User getUserById(@Param("id") Integer id);//修改用户信息public int modify(User user);//修改当前用户密码public int updatePwd(@Param("id") Integer id,@Param("pwd") String pwd);
}

3.10.2 UserMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yang.dao.User.UserMapper"><select id="getLoginUser" parameterType="String" resultType="User">select * from smbms_user<trim prefix="where"><if test="userCode != null">userCode = #{userCode}</if></trim></select><insert id="add" parameterType="map">insert into smbms_user values (#{id},#{userCode},#{userName},#{userPassword},#{gender},#{birthday},#{phone},#{address},#{userRole},#{createdBy},#{creationDate},#{modifyBy},#{modifyDate});</insert><!--多对一 按照结果嵌套查询--><select id="getUserList" resultType="user">select u.*,r.roleName from smbms_user u,smbms_role r where  u.userRole=r.id<if test="userRole!= null">and u.userRole = #{userRole} </if><if test="userName!= null and userName!=''">and u.userName like CONCAT('%',#{userName},'%')</if>order by creationDate DESC limit #{from},#{pageSize}</select><select id="getUserCount" resultType="Integer">select count(1) as count from smbms_user u,smbms_role r where u.userRole=r.id<if test="userRole!=null">and userRole=#{userRole}</if><if test="userName!=null and userName!=''">and userName like CONCAT('%',#{userName},'%')</if></select><delete id="deleteUserById" parameterType="Integer">delete from smbms_user where id = #{id};</delete><select id="getUserById" resultType="User">select * from smbms_user where id = #{id};</select><update id="modify" parameterType="Role">update smbms_user<trim prefix="set" suffixOverrides="," suffix="where id = #{id}"><if test="userCode != null">userCode=#{userCode},</if><if test="userName != null">userName=#{userName},</if><if test="userPassword != null">userPassword=#{userPassword},</if><if test="gender != null">gender=#{gender},</if><if test="birthday != null">birthday=#{birthday},</if><if test="phone != null">phone=#{phone},</if><if test="address != null">address=#{address},</if><if test="userRole != null">userRole=#{userRole},</if><if test="createdBy != null">createdBy=#{createdBy},</if><if test="creationDate != null">creationDate=#{creationDate},</if><if test="modifyBy != null">modifyBy=#{modifyBy},</if><if test="modifyDate != null">modifyDate=#{modifyDate}</if></trim></update><update id="updatePwd">update smbms_user set userPassword = #{pwd} where id = #{id}</update></mapper>

3.10.3 User测试

import com.yang.dao.User.UserMapper;
import com.yang.pojo.User;
import com.yang.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;/*** @author 缘友一世* @date 2022/7/23-15:07*/
public class TestUserMapper {//封装获取当前时间的函数public static Date getCurrentDate() throws ParseException {Date date=new Date();//获取当前的时间SimpleDateFormat sd=new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");//用这种格式去格式化,与数据库里的格式保持一致/*System.out.println(sd.format(date));*/String format = sd.format(date); //转成Stringreturn sd.parse(format);}@Testpublic void getLoginUser(){SqlSession session = MybatisUtils.getSession();UserMapper mapper = session.getMapper(UserMapper.class);User user = mapper.getLoginUser("liming");System.out.println(user);session.close();}@Testpublic void add() throws ParseException {SqlSession session = MybatisUtils.getSession();UserMapper mapper = session.getMapper(UserMapper.class);HashMap<String, Object> map = new HashMap<String, Object>();map.put("id",16);map.put("userCode","duxuan");map.put("userName","杜轩");map.put("userPassword","root");map.put("gender",1);map.put("birthday",null);map.put("phone","110");map.put("address","上海");map.put("userRole",3);map.put("createdBy",1);map.put("creationDate",getCurrentDate());mapper.add(map);session.close();}@Testpublic void getUserList(){SqlSession session = MybatisUtils.getSession();UserMapper mapper = session.getMapper(UserMapper.class);List<User> users = mapper.getUserList("孙", 3, 0, 30);for (User user : users) {System.out.println(user.toString());}session.close();}@Testpublic void getUserCount(){SqlSession session = MybatisUtils.getSession();UserMapper mapper = session.getMapper(UserMapper.class);int times = mapper.getUserCount("邓超", 3);System.out.println(times);session.close();}@Testpublic void deleteUserById(){SqlSession session = MybatisUtils.getSession();UserMapper mapper = session.getMapper(UserMapper.class);mapper.deleteUserById(16);session.close();}@Testpublic void getUserById(){SqlSession session = MybatisUtils.getSession();UserMapper mapper = session.getMapper(UserMapper.class);User user = mapper.getUserById(15);System.out.println(user);session.close();}@Testpublic void modify(){SqlSession session = MybatisUtils.getSession();UserMapper mapper = session.getMapper(UserMapper.class);User user = new User();user.setId(16);user.setUserName("杜轩1");mapper.modify(user);session.close();}@Testpublic void updatePwd(){SqlSession session = MybatisUtils.getSession();UserMapper mapper = session.getMapper(UserMapper.class);mapper.updatePwd(16,"superRoot");session.close();}
}

关于Mybatis的深入学习(4)之动态SQL二十四道练习相关推荐

  1. MyBatis:学习笔记(4)——动态SQL

    MyBatis:学习笔记(4)--动态SQL 转载于:https://www.cnblogs.com/MrSaver/p/7453949.html

  2. JavaWeb学习笔记(动态SQL)

    JavaWeb学习笔记(动态SQL) 动态SQL中的元素 < if>元素 < choose>.< when>.< otherwise>元素 < w ...

  3. 零基础带你学习MySQL—unique 唯一(二十五)

    零基础带你学习MySQL-unique 唯一(二十五) unqiue 使用细节 如果没有指定 not null 则 unique 字段可以有多个 null 如果一个列(字段) 是 unique not ...

  4. 生成对抗网络-改进方法|深度学习(李宏毅)(二十四)

    视频地址: ①B站:https://www.bilibili.com/video/BV15W411i7uP?p=2 ②油管:https://www.youtube.com/watch?v=KSN4QY ...

  5. mybatis学习7之动态sql

    动态sql环境搭建和数据准备 工具类,获取UUID package com.shan.utils;import org.junit.Test;import java.util.UUID;public ...

  6. Mybatis学习笔记之---动态sql中标签的使用

    动态Sql语句中标签的使用 (一)常用标签 1.<if> if标签通常用于WHERE语句中,通过判断参数值来决定是否使用某个查询条件, 他也经常用于UPDATE语句中判断是否更新某一个字段 ...

  7. mybatis入门(四)之动态SQL

    转载自  mybatis 动态SQL 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦. ...

  8. mybatis的注解开发之三种动态sql

    脚本sql XML配置方式的动态SQL我就不讲了,有兴趣可以自己了解,下面是用<script>的方式把它照搬过来,用注解来实现.适用于xml配置转换到注解配置 @Select(" ...

  9. 【Mybatis 之应用篇】 4_动态SQL、缓存

    文章目录 Mybatis 十二.动态SQL 1.IF 2.choose(when,otherwise) 3.where,set 4.SQL片段 5.Foreach 十三.缓存 (了解) 1.简介 2. ...

  10. 【MyBatis框架】mapper配置文件-关于动态sql

    动态sql 1.什么是动态sql mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 2.需求 用户信息综合查询列表和用户信息查询列表总数这两个statem ...

最新文章

  1. Eclipse使用Tomcat发布项目时出现YadisException异常解决方案
  2. latex中的各种文件
  3. 【Android 修炼手册】常用技术篇 -- 聊聊 Android 的打包
  4. yield方法释放锁吗_死磕Synchronized底层实现重量级锁
  5. c语言中怎么 写子程序,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
  6. js undefined 相等_你知道JS中==和===区别吗?
  7. unix进程的环境--unix环境高级编程读书笔记
  8. 求两个点的欧氏距离_马氏距离
  9. c语言词法分析程序设计,c语言词法分析器的简单实现 词法分析器的设计与实现...
  10. 前端,自定义印章效果
  11. Linux安装Tomcat完整步骤
  12. 手机文件上传服务器,如何上传文件到服务器 上传文件到服务器方法
  13. oracle lob值是什么,oracle LOB介绍
  14. GIS应用技巧之CAD与GIS数据转换
  15. 12个免费logo生成器
  16. 摩尔定律、安迪-比尔定律、反摩尔定律
  17. Carboxyrhodamine 110-PEG4-DBCO,羧罗丹明110-PEG4-DBCO是一种荧光标记染料
  18. [电脑问题1]Microsoft Visual Basic运行时错误‘-2147221164’:没有注册类
  19. 最新论文笔记(+16):K-Time Modifiable and Epoch-Based Redactable Blockchain / TIFS 2021
  20. python层次分析法一致性检验+权重计算

热门文章

  1. C++(opencv)简单拼接两幅图像
  2. UI 移动端设计尺寸
  3. THUPC 2019 CTS 2019 打铁记
  4. 408计算机考研后期规划-10月起
  5. Java方法入参三个省略号...啥意思
  6. 怎么架设魔兽世界服务器?
  7. 网易云信 android,Android 网易云信集成(一)
  8. iOS使用wifi传输文件到iPhone
  9. PHP解压zip文件,并且读取文件内容输出
  10. C语言的那些小秘密之异常处理