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 ...
随机推荐
- 数据库MySQL四
一.测试题 二.复习 说明:sql中的函数分为单行函数和分组函数 调用语法:select 函数名(实参列表); 1>字符函数 concat(str1,str2,..):拼接字符 substr(s ...
- 使用Vue-TreeSelect组件实现公司-部门-人员级联下拉列表的处理
最近在改造原有Bootstrap开发框架,增加一个Vue&Element前端的时候,发现需要处理一个级联更新的过程,就是选择公司,然后更新部门,选择部门,或者人员列表,选择作为主管的一个实现, ...
- java面试一日一题:java的类加载过程
问题:请讲下java的类加载机制及过程 分析:该问题主要考察对JVM加载类的机制及过程,延申出的问题是为什么使用双亲委托模型,有什么办法可以打破双亲委托吗: 回答要点: 主要从以下几点去考虑, 1.类 ...
- JAVAEE_Servlet_04_在service()方法中连接数据库获取表信息
在service()方法中连接数据库获取表信息 代码: package com.shige.controller; import javax.servlet.*; import java.io.IOE ...
- 不一样的角度理解Vue组件
什么是组件 以Java.C#等面向对象编程语言的角度去理解Vue组件,能够发现组件和面向对象编程的方式和风格很相似.一切事物皆为对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽 ...
- 读取ini配置文件 及 UI对象库
读取ini配置文件 配置项 读取API 写入API 实战:UI 对象库 读取ini配置文件 配置项 在每个 ini 配置文件中,配置数据会被分组(比如下述配置文件中的"config" ...
- Mybatis一级缓存和结合Spring Framework后失效的源码探究
1.在下面的案例中,执行两次查询控制台只会输出一次 SQL 查询: mybatis-config.xml <?xml version="1.0" encoding=" ...
- Git使用指导
Git使用指导 目录结构: 一.版本控制 二.Git的历史 三.Git环境配置 四.GIt项目构建 五.Git基本理论 六.GIt文件操作 七.使用码云/GitHub 八.IDEA中继承Git 九.G ...
- pyqt5 多线程+定时器+读取本地图片
前言 一个程序界面有多个button 按钮时,单击一个按钮,若此按钮对应的信号正在执行,且还未执行完毕: 此时再次单击另外一个按钮,就会出现假死状态. 这个时候我们就需要使用 多线程去解决 多线程+定 ...
- 洛谷P1424 小鱼的航程(改进版)
题目背景 原来的题目太简单,现改进让小鱼周末也休息,请已经做过重做该题. 题目描述 有一只小鱼,它上午游泳150公里,下午游泳100公里,晚上和周末都休息(实行双休日),假设从周x(1<=x&l ...