@Insert的用法
了许久@Insert的用法,先转载一波留个记录,原文链接在最下面
概述
不需要返回主键
1.RoleMapper接口增加接口方法
2.单元测试
返回自增主键
1.RoleMapper接口增加接口方法
2.单元测试
返回非自增主键
1.RoleMapper接口增加接口方法
2.单元测试
概述
@Insert注解本身很简单,需要注意的是如果需要返回主键的值,情况会稍微复杂一点,这种XML方式配置本质是一样的
不需要返回主键
1.RoleMapper接口增加接口方法
/**
*
*
* @Title: insertSysRole
*
* @Description: insertSysRole 不需要返回主键的情况
*
* @param sysRole
* @return
*
* @return: int
*/
@Insert({ insert into sys_role(id, role_name, enabled, create_by, create_time) values(#{id}, #{roleame}, #{enabled}, #{createBy}, #{createTime, jdbcType=TIMESTAMP}) })
int insertSysRole(SysRole sysRole);
2.单元测试
@Test
public void insertSysRoleTest() {
logger.info(insertSysRoleTest);
// 获取SqlSession
SqlSession sqlSession = getSqlSession();
try {
// 获取RoleMapper接口
RoleMapper roleMapper = sqlSession.getMapper();
SysRole sysRole = new SysRole();
sysRole.setId((long) 99);
sysRole.setRoleame(小工匠);
sysRole.setEnabled(1);
sysRole.setCreateBy(test);
sysRole.setCreateTime(new Date());
// 新增用户 ,返回受影响的行数
int result = roleMapper.insertSysRole(sysRole);
// 只插入一条数据 ,期望是1
Assert.assertEquals(1, result);
// 期望roleame 为小工匠
Assert.assertEquals(小工匠, sysRole.getRoleame());
logger.info(sysRole: sysRole);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 为了保持测试数据的干净,这里选择回滚
// 由于默认的()是不自动提交的
// 除非显式的commit,否则不会提交到数据库
sqlSession.rollback();
logger.info(为了保持测试数据的干净,这里选择回滚,不写入mysql,请观察日志,回滚完成);
();
logger.info(sqlSession close successfully );
}
}
返回自增主键
1.RoleMapper接口增加接口方法
/**
*
*
* @Title: insertSysRole2
*
* @Description: insertSysRole2 返回自增主键的情况
*
* @param sysRole
* @return
*
* @return: int
*/
@Insert({ insert into sys_role(role_name, enabled, create_by, create_time) values(#{roleame}, #{enabled}, #{createBy}, #{createTime, jdbcType=TIMESTAMP}) })
@Opti(useGeneratedKeys = true, keyProperty = id)
int insertSysRole2(SysRole sysRole);
和第一个场景相比,SQL语句中少了id这一列,注解多了一个@Opti, 我们在这个注解设置了useGeneratedKeys 和 keyProperty ,用法同xml中的配置。
2.单元测试
@Test
public void insertSysRoleTest2() {
logger.info(insertSysRoleTest2);
// 获取SqlSession
SqlSession sqlSession = getSqlSession();
try {
// 获取RoleMapper接口
RoleMapper roleMapper = sqlSession.getMapper();
SysRole sysRole = new SysRole();
sysRole.setRoleame(小工匠2);
sysRole.setEnabled(1);
sysRole.setCreateBy(test2);
sysRole.setCreateTime(new Date());
// 新增用户 ,返回受影响的行数
int result = roleMapper.insertSysRole2(sysRole);
// 只插入一条数据 ,期望是1
Assert.assertEquals(1, result);
// 期望roleame 为小工匠
Assert.assertEquals(小工匠2, sysRole.getRoleame());
logger.info(sysRole: sysRole);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 为了保持测试数据的干净,这里选择回滚
// 由于默认的()是不自动提交的
// 除非显式的commit,否则不会提交到数据库
sqlSession.rollback();
logger.info(为了保持测试数据的干净,这里选择回滚,不写入mysql,请观察日志,回滚完成);
();
logger.info(sqlSession close successfully );
}
}
返回非自增主键
1.RoleMapper接口增加接口方法
/**
*
*
* @Title: insertSysRole
*
* @Description: insertSysRole 返回非自增主键的情况
*
* @param sysRole
* @return
*
* @return: int
*/
@Insert({ insert into sys_role(role_name, enabled, create_by, create_time) values(#{roleame}, #{enabled}, #{createBy}, #{createTime, jdbcType=TIMESTAMP}) })
@SelectKey(statement = SELECT LAST_ISERT_ID(), keyProperty = id, resultType = , before = false)
int insertSysRole(SysRole sysRole);
配置和xml基本是相同的,其中before=false 等同于order=”AFTER”. before=true 等同于order=”BEFORE”.
不同数据库中,order的配置不同,需要注意下。
2.单元测试
@Test
public void insertSysRoleTest() {
logger.info(insertSysRoleTest);
// 获取SqlSession
SqlSession sqlSession = getSqlSession();
try {
// 获取RoleMapper接口
RoleMapper roleMapper = sqlSession.getMapper();
SysRole sysRole = new SysRole();
sysRole.setRoleame(小工匠);
sysRole.setEnabled(1);
sysRole.setCreateBy(test);
sysRole.setCreateTime(new Date());
// 新增用户 ,返回受影响的行数
int result = roleMapper.insertSysRole(sysRole);
// 只插入一条数据 ,期望是1
Assert.assertEquals(1, result);
// 期望roleame 为小工匠
Assert.assertEquals(小工匠, sysRole.getRoleame());
logger.info(sysRole: sysRole);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 为了保持测试数据的干净,这里选择回滚
// 由于默认的()是不自动提交的
// 除非显式的commit,否则不会提交到数据库
sqlSession.rollback();
logger.info(为了保持测试数据的干净,这里选择回滚,不写入mysql,请观察日志,回滚完成);
();
logger.info(sqlSession close successfully );
}
}
原文:https:///yangshangwei/article/details/8000186
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上一篇:数据操作语言:INSERT语句
下一篇:嵌入式系统软件层次结构
留言与评论(共有 5 条评论) |
本站网友 乳腺疾病 | 22分钟前 发表 |
#{createTime | |
本站网友 淘宝网新闻 | 7分钟前 发表 |
#{createBy} | |
本站网友 se53se | 9分钟前 发表 |
sysRole.getRoleame()); logger.info(sysRole | |
本站网友 深圳市交通警察局 | 1分钟前 发表 |
#{roleame} |