MyBatis教程:XML方法的基本使用:增删改查
1.输入用户
1.1 简单的录入方法
如果我们现在想添加一个新用户,应该怎么做呢?
首先,在SysUserMapper接口中添加以下方法。
/**
* 新增用户
*
* @param sysUser
* @return
*/
int insert(SysUser sysUser);
然后打开相应的 SysUserMapper.xml 文件并添加以下语句。
<insert id="insert">
INSERT INTO sys_user(id, user_name, user_password, user_email, user_info, head_img, create_time)
VALUES (#{id},#{userName},#{userPassword},#{userEmail},#{userInfo},#{headImg,jdbcType=BLOB},#{createTime,jdbcType=TIMESTAMP})
</insert>
特别说明:
1)为了避免类型错误,对于一些特殊的数据类型,需要定义特殊的jdbcType值。例如,headImg 定义了 BLOB 类型,createTime 定义了 TIMESTAMP 类型。
2)对应的BLOB类型是ByteArrayInputStream,它是一个二进制数据流。
3)由于数据区分日期、时间和日期类型,因此Java中经常使用java.util.Date类型。因此,为了保证数据类型正确,需要手动设置日期类型。日期、时间和日期对应的 JDBC 类型分别是 DATE、TIME 和 TIMESTAMP。
在SysUserMapperTest测试类中添加以下代码来测试insert()方法。
@Test
public void testInsert() {
SqlSession sqlSession = getSqlSession();
try {
SysUserMapper sysUserMapper = sqlSession.getMapper(SysUserMapper.class);
SysUser sysUser = new SysUser();
sysUser.setUserName("test1");
sysUser.setUserPassword("123456");
sysUser.setUserEmail("test@mybatis.tk");
sysUser.setUserInfo("test info");
// 正常情况下应该读入一张图片保存到byte数组中
sysUser.setHeadImg(new byte[]{1, 2, 3});
sysUser.setCreateTime(new Date());
// 这里的返回值result是执行的SQL影响的行数
int result = sysUserMapper.insert(sysUser);
// 只插入1条数据
Assert.assertEquals(1, result);
// id为null,没有给id赋值,并且没有配置回写id的值
Assert.assertNull(sysUser.getId());
} finally {
// 为了不影响其他测试,这里选择回滚
// 默认的sqlSessionFactory.openSession()是不自动提交的
// 因此不手动执行commit也不会提交到数据库
sqlSession.rollback();
sqlSession.close();
}
}
执行此测试程序,输出日志如下。
调试 [main] - ==> 准备:插入 sys_user(id, user_name, user_password, user_email, user_info, head_img, create_time) 值 (?,?,?,?,?,?,?)
DEBUG [main] - ==> 参数:null, test1(String), 123456(String), test@mybatis.tk(String), info test(String), java.io.ByteArrayInputStream@544a2ea6(ByteArrayInputStream) , 2019- 07-02 13:09:07.822(Timestamp)
DEBUG [main] - 准备:INSERT INTO sys_user(user_name, user_password, user_email, user_info, head_img, create_time) VALUES (?,?,?,?,?,?)
DEBUG [main] - ==> 参数:test1(String)、123456(String)、test@mybatis.tk(String)、info test(String)、java.io.ByteArrayInputStream@544a2ea6(ByteArrayInputStream)、2019-07-02 14:02 :22.506(Timestamp)
DEBUG [main] - 准备: UPDATE sys_user SET user_name = ?, user_password = ?, user_email = ?, user_info = ?, head_img = ?, create_time = ? WHERE id = ?
DEBUG [main] - ==> 参数:admin_test(String), 123456(String), admin_test@mybatis.tk(String), test info(String), java.io.ByteArrayInputStream@78186a70( ByteArrayInputStream), 2019-07-02 14:57 :34.792(时间戳), 1(长)
DEBUG [主要] - 准备:从 sys_user WHERE id = ?
DEBUG [main] - ==> 参数:1(长)
DEBUG [main] -
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。