项目创建好,开始写代码:
这里把 sql 数据库也给出来:
下载地址
/*
Navicat Premium Data Transfer
Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 50726
Source Host : localhost:3306
Source Schema : mybatis_demo
Target Server Type : MySQL
Target Server Version : 50726
File Encoding : 65001
Date: 28/07/2021 17:22:32
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名称',
`birthday` datetime NULL DEFAULT NULL COMMENT '生日',
`sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别',
`address` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '老王', '2018-02-27 17:47:08', '男', '北京');
INSERT INTO `user` VALUES (2, '熊大', '2018-03-02 15:09:37', '女', '上海');
INSERT INTO `user` VALUES (3, '熊二', '2018-03-04 11:34:34', '女', '深圳');
INSERT INTO `user` VALUES (4, '光头强', '2018-03-04 12:04:06', '男', '广州');
INSERT INTO `user` VALUES (8, '利好', '2021-07-28 17:16:11', '女', '泰山');
INSERT INTO `user` VALUES (9, '李四', '2021-07-28 16:11:39', '男', '北极');
INSERT INTO `user` VALUES (10, '李四', '2021-07-28 16:12:16', '男', '北极');
INSERT INTO `user` VALUES (11, '用户', '2021-07-28 17:21:32', '女', '中国美国');
SET FOREIGN_KEY_CHECKS = 1;
1、查询
Mybatis 是反着操作的,先写 sql 然后再创建方法,步骤如下:
在 UserDao.xml 里写下面的代码实现查询操作:
<select id="selectAll" resultType="com.xxxx.entity.User">
select * from user
</select>
id 是唯一标识,resultType 是返回值类型,由于查询返回的就是 User 类型,记得包路径别写错
然后在 UserDao 写方法
注意,方法名必须和刚刚写的 id 相同,这点很关键,注意返回值类型是 List 的 User,
然后进入 UserTest 文件,写方法:
@Test
public void selectAll() {
List<User> users = mapper.selectAll();
for (User user :
users) {
System.out.println(user.toString());
}
}
注意,必须要写 @Test,users 接收到的就是查询完的结果
运行,得到结果:
2、删除
由于删除是根据用户的 id 进行的,所以同理在 UserDao.xml 里写代码:
这里一个细节:
# 和 @ 的区别
然后在 UserDao 里面写方法体:
执行结果是 1,说明删除成功
3、修改
同理,先去 UserDao.xml 写东西:
<update id="updateById" parameterType="com.xxxx.entity.User">
update user set sex = #{sex}, birthday = #{birthday}, address = #{address}, username = #{username} where id = #{id};
</update>
@Test
public void updateById() {
User user = new User();
user.setId(8);
user.setUsername("利好");
user.setBirthday(new Date());
user.setSex("女");
user.setAddress("泰山");
int count = mapper.updateById(user);
session.commit();
System.out.println(count);
}
修改完毕,最后一个添加
4、添加
<insert id="addUser" parameterType="com.xxxx.entity.User">
insert into user (username, birthday, sex, address) values(#{username}, #{birthday}, #{sex}, #{address});
</insert>
@Test
public void addUser() {
User user = new User();
user.setUsername("用户");
user.setBirthday(new Date());
user.setSex("女");
user.setAddress("中国美国");
int count = mapper.addUser(user);
session.commit();
System.out.println(count);
}
完成 CRUD,完结撒花!!!!