一.新增用户接口

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. libpcap 库使用(二)

    参考资料: http://www.tcpdump.org/manpages/pcap.3pcap.html 分类介绍了该lib的函数 Opening a capture handle for read ...

  2. Laravel自定义Api接口全局异常处理

    在做API时,需要对一些异常进行全局处理,比如添加用户执行失败时,需要返回错误信息 // 添加用户 www.bcty365.com $result = User::add($user); if(emp ...

  3. 论坛:获取当前原始请求中的远程IP地址

    topic.setIpAddr(ServletActionContext.getRequest().getRemoteAddr());//当前原始请求中的远程IP地址

  4. Python3实战系列之三(获取印度售后数据项目)

    问题:续接上一篇.说干咱就干呀,勤勤恳恳写程序呀! 目标:实现第一个python程序的“Hello world!” 解决方案:新建一个项目Test,创建一个Test.py文件.在文件中实现打印出“He ...

  5. tomcat 配置域名访问应用

    <Host appBase="webapps" autoDeploy="true" name="www.XXX.com" unpack ...

  6. .net从网络接口地址获取json,然后解析成对象(二)

    整理代码,这是第二种方法来读取json,然后反序列化成对象的,代码如下: public static Order GetOrderInfo(string _tid, string _orderNo) ...

  7. Viewer.js 是一款强大的 jQuery 图像浏览插件。

    https://blog.csdn.net/qq_29132907/article/details/80136023 一.效果图  二.代码<!DOCTYPE html><html ...

  8. LD_LIBRARY_PATH

    LD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径. 在linux下可以用export命令来设置这个值,比如 在linux ...

  9. mysql数据库进阶篇

    一.连表操作 1)为何需要连表操作 .把所有数据都存放于一张表的弊端 .表的组织结构复杂不清晰 .浪费空间 .扩展性极差 2)表设计,分析表与表之间的关系 寻找表与表之间的关系的套路 举例:emp表 ...

  10. keras框架的CNN手写数字识别MNIST

    参考:林大贵.TensorFlow+Keras深度学习人工智能实践应用[M].北京:清华大学出版社,2018. 首先在命令行中写入 activate tensorflow和jupyter notebo ...