一.新增用户接口

UserMapper.java
package tk.mybatis.simple.mapper;

import org.apache.ibatis.annotations.Param;
import tk.mybatis.simple.model.SysRole;
import tk.mybatis.simple.model.SysUser; import java.util.List; /**
* @author weihu
* @date 2018/8/3/003 0:01
*/
public interface UserMapper { /**
* 新增用户
*/
int insertUser(SysUser sysUser); }

 

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">
<!--sql语句映射文件--> <!--因为已经配置了别名,所以resultType可以直接写类名,没有配置的话就要写类全名-->
<mapper namespace="tk.mybatis.simple.mapper.UserMapper"> <!--添加用户,不需要返回值类型-->
<insert id="insertUser" parameterType="tk.mybatis.simple.model.SysUser">
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> </mapper>

   id:命名空间唯一标识符,可用来代表这条语句。

parameterType:即将传入的语句参数的完全限定类名或别名。这个属性是可选的,因为MyBatis可以推断出出入语句的具体参数,因此不建议配置该属性。
jdbcType:为了防止类型错误,对于一些特殊的数据类型,建议指定具体的jdbcType值。

UserMapperTest.java
package tk.mybatis.simple.mapper;

import org.apache.ibatis.session.SqlSession;
import org.junit.Assert;
import org.junit.Test;
import tk.mybatis.simple.model.SysRole;
import tk.mybatis.simple.model.SysUser; import java.util.Date;
import java.util.List; /**
* @author weihu
* @date 2018/8/5/005 9:34
* @desc
*/
public class UserMapperTest extends BaseMapperTest { /**
* 插入用户
*/
@Test
public void insertUserTest(){
SqlSession sqlSession = getSqlSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//创建一个user对象
SysUser sysUser=new SysUser();
sysUser.setId(4L);
sysUser.setUserName("huge");
sysUser.setUserPassword("");
sysUser.setUserEmail("1210740934@qq.com");
sysUser.setUserInfo("测试用户");
sysUser.setHeadImg(new byte[]{,,});
/*
插入的时间格式
sysUser.setCreateTime("2018-08-05 17:00:58");插入这种的时间格式是不正确的
*/
sysUser.setCreateTime(new Date());
int result = userMapper.insertUser(sysUser);
System.out.println("插入1条数据"+result);
//注意一定要commit(),不提交的话数据是插入不到数据库中的
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
//数据插入不成功进行回滚
sqlSession.rollback();
} finally {
//关闭sqlSession
sqlSession.close();
}
} }

二、返回主键自增的值

UserMapper.java
package tk.mybatis.simple.mapper;

import org.apache.ibatis.annotations.Param;
import tk.mybatis.simple.model.SysRole;
import tk.mybatis.simple.model.SysUser; import java.util.List; /**
* @author weihu
* @date 2018/8/3/003 0:01
*/
public interface UserMapper { /**
* 获取主键自增Id
*/
int insertPrimaryKey(SysUser sysUser); }

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">
<!--sql语句映射文件--> <!--因为已经配置了别名,所以resultType可以直接写类名,没有配置的话就要写类全名-->
<mapper namespace="tk.mybatis.simple.mapper.UserMapper"> <insert id="insertPrimaryKey" parameterType="tk.mybatis.simple.model.SysUser" useGeneratedKeys="true" keyProperty="id">
INSERT INTO sys_user (
user_name,
user_password ,
user_email,
user_info,
head_img,
create_time)
VALUES
(#{userName},#{userPassword},#{userEmail},#{userInfo},#{headImg,jdbcType=BLOB},#{createTime,jdbcType=TIMESTAMP})
</insert> </mapper>
UserMapperTest.java
package tk.mybatis.simple.mapper;

import org.apache.ibatis.session.SqlSession;
import org.junit.Assert;
import org.junit.Test;
import tk.mybatis.simple.model.SysRole;
import tk.mybatis.simple.model.SysUser; import java.util.Date;
import java.util.List; /**
* @author weihu
* @date 2018/8/5/005 9:34
* @desc
*/
public class UserMapperTest extends BaseMapperTest { @Test
public void insertGetPrimayKey(){
SqlSession sqlSession = getSqlSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //创建一个user对象
SysUser sysUser=new SysUser();
sysUser.setUserName("huge2");
sysUser.setUserPassword("");
sysUser.setUserEmail("1210740934@qq.com");
sysUser.setUserInfo("测试用户");
sysUser.setHeadImg(new byte[]{,,});
int result=userMapper.insertPrimaryKey(sysUser);
sqlSession.commit();
       //自动获取id
System.
out.println(sysUser.getId());
} catch (Exception e) {
//数据插入不成功进行回滚
sqlSession.rollback();
e.printStackTrace();
} finally {
//关闭sqlSession
sqlSession.close();
}
} }

三、使用selectKey返回主键的值

UserMapper.java
package tk.mybatis.simple.mapper;

import org.apache.ibatis.annotations.Param;
import tk.mybatis.simple.model.SysRole;
import tk.mybatis.simple.model.SysUser; import java.util.List; /**
* @author weihu
* @date 2018/8/3/003 0:01
*/
public interface UserMapper { /**
* 获取主键,主键自增和非自增主键都可以获取
*/
int insertAnyPrimaryKey(SysUser sysUser);
}

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">
<!--sql语句映射文件--> <!--因为已经配置了别名,所以resultType可以直接写类名,没有配置的话就要写类全名-->
<mapper namespace="tk.mybatis.simple.mapper.UserMapper"> <insert id="insertAnyPrimaryKey" parameterType="tk.mybatis.simple.model.SysUser">
INSERT INTO sys_user (
user_name,
user_password ,
user_email,
user_info,
head_img,
create_time)
VALUES
(#{userName},#{userPassword},#{userEmail},#{userInfo},#{headImg,jdbcType=BLOB},#{createTime,jdbcType=TIMESTAMP})
<selectKey keyColumn="id" resultType="long" keyProperty="id" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>

</insert>
</mapper>

order属性设置和使用的数据库有关,msyql用AFTER,Oracle用BEFORE

SELECT LAST_INSERT_ID()用于获取数据库中最后插入的数据的ID值。
UserMapperTest.java
package tk.mybatis.simple.mapper;

import org.apache.ibatis.session.SqlSession;
import org.junit.Assert;
import org.junit.Test;
import tk.mybatis.simple.model.SysRole;
import tk.mybatis.simple.model.SysUser; import java.util.Date;
import java.util.List; /**
* @author weihu
* @date 2018/8/5/005 9:34
* @desc
*/
public class UserMapperTest extends BaseMapperTest { @Test
public void insertAnyPrimaryKey(){
SqlSession sqlSession = getSqlSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //创建一个user对象
SysUser sysUser=new SysUser();
sysUser.setUserName("huge2");
sysUser.setUserPassword("");
sysUser.setUserEmail("1210740934@qq.com");
sysUser.setUserInfo("测试用户");
sysUser.setHeadImg(new byte[]{,,});
int result=userMapper.insertAnyPrimaryKey(sysUser);
sqlSession.commit();
System.
out.println(sysUser.getId());
} catch (Exception e) {
//数据插入不成功进行回滚
sqlSession.rollback();
e.printStackTrace();
} finally {
//关闭sqlSession
sqlSession.close();
}
}
}

3.insert添加用法的更多相关文章

  1. Oracle笔记-Multitable INSERT 的用法

    [转自]  http://blog.chinaunix.net/uid-8504518-id-3310531.html 为避免日趋衰退的记忆力,参考官方E文文档<Introduction to ...

  2. 关于MySQL的insert添加自动获取日期的now()的用法

    例如我的MySQL数据库里有个表table1,它的字段有id,date1,date2,除id外都是Datetime类型的.那么插值语句这样写:insert into table1(date1,date ...

  3. Oracle insert all用法简介

    insert all是oracle中用于批量写数据的 现在直接通过例子学习一下,比较简单直观,例子来自<收获,不止SQL优化>一书 环境准备 create table t as selec ...

  4. Influx Sql系列教程五:insert 添加数据

    接下来开始进入influxdb的curd篇,首先我们看一下如何添加数据,也就是insert的使用姿势 在进入本篇之前,对于不了解什么是retention policy, tag, field的同学,有 ...

  5. mybatis+mysql insert添加数据后返回数据主键id---(转)

    1.根据useGeneratedKeys获取返回值,部分数据库不支持 修改mybatis xml 1 2 3 <insert id="insertUser" useGener ...

  6. mybatis+mysql insert添加数据后返回数据主键id

    1.根据useGeneratedKeys获取返回值,部分数据库不支持 修改mybatis xml <insert id="insertUser" useGeneratedKe ...

  7. Bulk Insert的用法 .

    /******* 导出到excel */EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:/temp1.xls -c -q -S&quo ...

  8. ORACLE INSERT ALL 用法

    1INSERT ALL 1.1句法 multi_table_insert :: = conditional_insert_clause :: = 1.2multi_table_insert 在多表插入 ...

  9. 【转】mysql INSERT的用法

    转自:http://www.cnblogs.com/ggjucheng/archive/2012/11/05/2754938.html insert的语法 INSERT [LOW_PRIORITY | ...

随机推荐

  1. django数据库多对多修改对应关系

    obj = models.Book.objects.get(id=1) #添加对应关系,给书添加作者# obj.m.add(3)# obj.m.add(2,4)# obj.m.add(*[1,2,3, ...

  2. \\Device\\PhysicalMemory

    从Windows Server 2003 with SP1 以后就禁用了用户态访问\\Device\\PhysicalMemory,要访读取SMBIOS的信息,请使用以下API:•EnumSystem ...

  3. Convert 实现 pdf 和图片格式互转

    pdf 转换为图片 (注意:pdf 默认转换的是透明背景,如果转为jpg格式必须添加背景色.-background white -flatten) convert -background white ...

  4. Arithmetic Slices II - Subsequence LT446

    446. Arithmetic Slices II - Subsequence Hard A sequence of numbers is called arithmetic if it consis ...

  5. 关于win10系统配置变量时,javac编译不出的原因:没用好百度!

    在上班时,用笔记本的win8系统成功配置了java环境,于是想把家里的台式也配置一下,可是配置出来后javac却出不来东东,我很费解,重新下载了2次,还是不行,于是就暂时放弃了.那时是17年12月25 ...

  6. IOS初级:story board的跳转

    本文要实现view1跳到view2,view2又跳回view1. 首先要在视图中拉出一条连接view1和view2的线. 下面是在view1的控制器中实现,从view1跳到view2 //发生跳转前会 ...

  7. [IBM][CLI Driver][DB2/NT] SQL1101N 不能以指定的授权标识和密码访问节点 "" 上的远程数据库 "LBZM"。 SQLSTATE=08004

    [IBM][CLI Driver][DB2/NT] SQL1101N  不能以指定的授权标识和密码访问节点 "" 上的远程数据库  "LBZM".  SQLST ...

  8. centos配置虚拟用户再也不用那么麻烦了

    http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users yum install -y vsftpd db4-utils vs ...

  9. 设置frameset高度

      设置frameset的高度 设置frameset高度 目前做了一个项目,界面如下: 这是使用frameset做的,在宽屏下开发一直没有发现什么问题,直到一个用户使用800*600的机子测试的时候, ...

  10. SyntaxError: missing ; before statement

    做分页功能,遇到了很坑的事情.前台一直报错:SyntaxError: missing ; before statement 最后发现解决办法是eval("("+s+")& ...