MyBatis 单表CURD操作(五)
MyBatis的CURD操作
添加CURD接口方法
package mapper;
import entity.UserEntity;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @desc User映射器接口
* @date 2020/6/19 上午8:59
*/
public interface UserMapper {
/**
* 根据年龄查询用户信息
* @param age 年龄
* @return user 用户实体集合
*/
public List<UserEntity> selectUserByAge(int age);
/**
* 根据年龄和性别查询用户信息
* @param userOne 获取年龄
* @param userTwo 获取性别
* @return 用户实体集合
*/
public List<UserEntity> selectUserByAgeAndSex(@Param("userOne") UserEntity userOne,@Param("userTwo") UserEntity userTwo);
/**
* 根据姓名和年龄查询用户信息
* @param name 姓名
* @param user 获取年龄
* @return
*/
public List<UserEntity> selectUserByNameAndAge(@Param("name") String name, @Param("user") UserEntity user);
/**
* 查询所有用户信息
* @return 用户实体集合
*/
public List<UserEntity> selectUserAll();
/**
* 新增用户
* @param user 用户实体
* @return 影响行数
*/
public int insertUser(UserEntity user);
/**
* 更新用户姓名
* @param user 用户姓名
* @return 影响行数
*/
public int updateUser(@Param("id") int id,@Param("name") String name);
/**
* 根据姓名删除用户
* @param name 用户姓名
* @return 影响行数
*/
public int deleteUserById(int id);
}
添加CURD接口方法对应的 UserMapper.xml 映射
<?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">
<!--namespace表示命名空间,填写Mapper映射器接口全路径-->
<mapper namespace="mapper.UserMapper">
<!--结果集映射(ORM)-->
<resultMap id="userResultMap" type="entity.UserEntity">
<!-- propery表示UserEntity属性名,column表示tb_user表字段名-->
<id property="id" column="id" />
<result property="userName" column="userName" />
<result property="password" column="password" />
<result property="name" column="name" />
<result property="age" column="age" />
<result property="sex" column="sex" />
<result property="birthday" column="birthday" />
<result property="created" column="created" />
<result property="updated" column="updated" />
</resultMap>
<!--select查询语句 id表示接口方法名 resultMap表示引用结果集映射-->
<select id="selectUserByAge" resultMap="userResultMap">
select * from tb_user where age > #{age};
</select>
<select id="selectUserByAgeAndSex" resultMap="userResultMap">
select * from tb_user where age > #{userOne.age} and sex = #{userTwo.sex};
</select>
<select id="selectUserByNameAndAge" resultMap="userResultMap">
select * from tb_user where name = #{name} and age > #{user.age};
</select>
<select id="selectUserAll" resultMap="userResultMap">
select * from tb_user;
</select>
<insert id="insertUser">
insert into tb_user (id,userName, password, name, age, sex, birthday, created, updated) values
(null,#{userName},#{password},#{name},#{age},#{sex},#{birthday},now(),now());
</insert>
<update id="updateUser">
update tb_user set name=#{name} where id=#{id};
</update>
<delete id="deleteUserById">
delete from tb_user where id=#{id};
</delete>
</mapper>
使用 JUnit 单元测试框架测试 CURD 接口方法
在 test/java下创建 MyBatisTest.java 文件,如下:
import entity.UserEntity;
import mapper.UserMapper;
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.Assert;
import org.junit.Before;
import org.junit.Test;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* @author benjamin.xu
* @desc
* @date 2020/6/23 下午5:36
*/
public class MyBatisTest {
private UserMapper userMapper;
private SqlSession sqlSession;
@Before
public void setUp() throws Exception {
// 指定mybatis环境配置文件
String resource = "mybatis-config.xml";
// 读取配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
// 构建sqlSessionFactory
SqlSessionFactory sqlSessionFactory
= new SqlSessionFactoryBuilder().build(inputStream);
// 获取sqlSession
sqlSession = sqlSessionFactory.openSession();
// 获取userMapper实例
userMapper = sqlSession.getMapper(UserMapper.class);
}
@After
public void tearDown() throws Exception {
sqlSession.close();
}
@Test
public void selectUserByAgeTest() {
List<UserEntity> userEntities = userMapper.selectUserByAge(20);
Assert.assertNotNull(userEntities);
}
@Test
public void selectUserAllTest() {
List<UserEntity> userEntities = userMapper.selectUserAll();
Assert.assertEquals(2,userEntities.size());
}
@Test
public void insertUserTest() throws Exception{
UserEntity userEntity = new UserEntity();
userEntity.setUserName("ww");
userEntity.setName("王五");
userEntity.setAge(21);
userEntity.setPassword("123456");
userEntity.setSex(1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = sdf.parse("1992-01-10");
userEntity.setBirthday(birthday);
int result = userMapper.insertUser(userEntity);
sqlSession.commit(); //提交事务
Assert.assertEquals(1,result);
}
@Test
public void updateUserTest() {
int result = userMapper.updateUser(1,"张三三");
sqlSession.commit();
Assert.assertEquals(1,result);
}
@Test
public void deleteUserByIdTest() {
int result = userMapper.deleteUserById(4);
sqlSession.commit();
Assert.assertEquals(1,result);
}
@Test
public void selectUserByAgeAndSexTest() {
UserEntity userEntityOne = new UserEntity();
userEntityOne.setAge(20);
UserEntity userEntityTwo = new UserEntity();
userEntityTwo.setSex(1);
List<UserEntity> userEntities
= userMapper.selectUserByAgeAndSex(userEntityOne,userEntityTwo);
System.out.println(userEntities);
Assert.assertNotNull(userEntities);
}
@Test
public void selectUserByNameAndAgeTest() {
UserEntity user = new UserEntity();
user.setAge(20);
List<UserEntity> userEntities =
userMapper.selectUserByNameAndAge("李四",user);
System.out.println(userEntities);
Assert.assertNotNull(userEntities);
}
}
MyBatis 单表CURD操作(五)的更多相关文章
- mysql之字段的修改,添加、删除,多表关系(外键),单表详细操作(增删改)
字段的修改.添加和删除 create table tf1( id int primary key auto_increment, x int, y int ); #修改 alter table tf1 ...
- django-两种方式对单表的操作
单表操作的内容 我们这里对数据库单表的操作包含增删改查四部分 具体链接数据库的方式我们是通过pymysql,当然你也可以用其他的. 两种方式的概念与区别 1.新url的方式 主要就是我们每一次向后台提 ...
- mybatis单表操作实现完全java代码封装
之前在项目中用到mybtis操作数据库时都是手动写sql,对于我这种sql水平不是很好地人来说痛苦死了:动态查询的sql我表示到现在还不会写呀! 还好,利用数据库表反向生成的工具可以帮我解决大部分的s ...
- Django中ORM简介与单表数据操作
一. ORM简介 概念:.ORM框架是用于实现面向对象编程语言种不同类型系统的数据之间的转换 构建模型的步骤:重点 (1).配置目标数据库信息,在seting.py中设置数据库信息 DATABASE ...
- 3、MyBatis教程之CURD操作
4.CURD操作 1.查询 根据用户 Id查询用户 在UserMapper中添加对应方法 public interface UserMapper { List<User> getUserL ...
- 通用mybatis单表操作接口
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...
- springboot整合mybatis及封装curd操作-配置文件
1 配置文件 application.properties #server server.port=8090 server.address=127.0.0.1 server.session.tim ...
- mysql复习---仅涉及单表的操作
一.登录数据库 二.创建数据库: 三.删除数据库 四.使用数据库创建表 五.向表中插入数据 六.查询 1.查询所有数据: 2.姓名查询 3.性别查询 4.查询姓名 5.根据年龄大小查询 6.多个条件查 ...
- 一次基于innobackupex备份及binlog的单表恢复操作
[环境介绍] 系统环境:Red Hat Enterprise Linux Server release 7.0 (Maipo) + Server version: 5.7.18-log MySQL C ...
随机推荐
- 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作centos7.8-15
自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作centos7.8-15 欢迎加QQ群:1026880196 进行交流学习 制作OpenS ...
- Mybatis3源码笔记(六)SqlSession执行过程
前几篇大致分析了初始化的过程,今天打算走一个SqlSession具体执行过程. @Test void shouldSelectAllAuthors() { try (SqlSession sessio ...
- Rabbitmq 3.6.5以上版本修改端口号方法
Rabbitmq 3.6.5以上版本修改端口号方法,网上查了下有一些方不管用,所以自己实践了引用官网说明 https://www.rabbitmq.com/configure.html#configu ...
- 拿到蚂蚁金服的offer是一种什么体验?3年Java程序员分享面经
前言:我是一名三年的Java程序员,之前一直是在外包公司工作的.在这个月五号的时候,通过我的学长做内推,有了去蚂蚁金服面试的机会.我是在12号接到的电话面试的,因为蚂蚁金服需要7天的简历评估的.还有就 ...
- CSS新特性contain,控制页面的重绘与重排
在介绍新的 CSS 属性 contain 之前,读者首先需要了解什么是页面的重绘与重排. 之前已经描述过很多次了,还不太了解的可以先看看这个提高 CSS 动画性能的正确姿势. OK,下面进入本文正题, ...
- 【JDK8】Java8 新增BASE64加解密API
什么是Base64编码? Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法 基于64个字符A-Z,a-z,0-9,+,/ ...
- hdu4994 博弈,按顺序拿球
题意: 给你n堆东西,两个人博弈的去拿,每次最少一个,最多是一堆,必须按顺序那,也就是只有把第一堆的东西拿完了才能去拿第二堆东西,谁先拿完谁胜,问新手是否能胜利. 思路: 显然 ...
- PhpMyWind储存型XSS漏洞练习(CVE-2017-12984)
0x01 介绍 又是一款开源CMS内容管理系统PhpMyWind,在小于等于5.4版本中存在储存型XSS漏洞.如下图所示,这个就是发生储存型XSS漏洞的代码 0x02 演示 1.第一张图是客户留言时, ...
- Linux系统应急响应
目录 排查用户相关的信息 排查进程端口相关的信息 查找恶意程序并杀掉 斩草除根 判断入侵方式,修复漏洞 当我们被告知一台Linux服务器被黑客入侵,黑客利用该服务器进行挖矿,并且在该服务器上放置了木马 ...
- Windows核心编程 第九章 线程与内核对象的同步(上)
第9章 线程与内核对象的同步 上一章介绍了如何使用允许线程保留在用户方式中的机制来实现线程同步的方法.用户方式同步的优点是它的同步速度非常快.如果强调线程的运行速度,那么首先应该确定用户方式的线程同步 ...