java insert用法_3.insert添加用法

本文介绍了使用MyBatis实现用户模块的三种不同方式:直接插入用户信息、返回主键自增值及使用selectKey返回主键值。通过具体代码示例展示了如何在Java环境中操作数据库。

一.新增用户接口

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 interfaceUserMapper {/**

* 新增用户*/

intinsertUser(SysUser sysUser);

}

UserMapper.xml

/p>

PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

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})

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 classUserMapperTest extends BaseMapperTest {/**

* 插入用户*/@Testpublic voidinsertUserTest(){

SqlSession sqlSession=getSqlSession();try{

UserMapper userMapper= sqlSession.getMapper(UserMapper.class);//创建一个user对象

SysUser sysUser=newSysUser();

sysUser.setId(4L);

sysUser.setUserName("huge");

sysUser.setUserPassword("8888888");

sysUser.setUserEmail("1210740934@qq.com");

sysUser.setUserInfo("测试用户");

sysUser.setHeadImg(new byte[]{1,2,3});/*插入的时间格式

sysUser.setCreateTime("2018-08-05 17:00:58");插入这种的时间格式是不正确的*/sysUser.setCreateTime(newDate());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 interfaceUserMapper {/**

* 获取主键自增Id*/

intinsertPrimaryKey(SysUser sysUser);

}

UserMapper.xml

/p>

PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

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})

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 classUserMapperTest extends BaseMapperTest {

@Testpublic voidinsertGetPrimayKey(){

SqlSession sqlSession=getSqlSession();try{

UserMapper userMapper= sqlSession.getMapper(UserMapper.class);//创建一个user对象

SysUser sysUser=newSysUser();

sysUser.setUserName("huge2");

sysUser.setUserPassword("88888886");

sysUser.setUserEmail("1210740934@qq.com");

sysUser.setUserInfo("测试用户");

sysUser.setHeadImg(new byte[]{1,2,3});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 interfaceUserMapper {/**

* 获取主键,主键自增和非自增主键都可以获取*/

intinsertAnyPrimaryKey(SysUser sysUser);

}

UserMapper.xml

/p>

PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

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})

SELECT LAST_INSERT_ID()

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 classUserMapperTest extends BaseMapperTest {

@Testpublic voidinsertAnyPrimaryKey(){

SqlSession sqlSession=getSqlSession();try{

UserMapper userMapper= sqlSession.getMapper(UserMapper.class);//创建一个user对象

SysUser sysUser=newSysUser();

sysUser.setUserName("huge2");

sysUser.setUserPassword("88888886");

sysUser.setUserEmail("1210740934@qq.com");

sysUser.setUserInfo("测试用户");

sysUser.setHeadImg(new byte[]{1,2,3});int result=userMapper.insertAnyPrimaryKey(sysUser);

sqlSession.commit();

System.out.println(sysUser.getId());

}catch(Exception e) {//数据插入不成功进行回滚

sqlSession.rollback();

e.printStackTrace();

}finally{//关闭sqlSession

sqlSession.close();

}

}

}

在 MySQL 中使用 SQL 插入语句出现 `java.sql.SQLSyntaxErrorException` 错误通常是由多种原因导致的,以下是一些可能的解决方法: ### 检查 SQL 语法 SQL 语法错误是导致该异常的常见原因。例如,引用[1]中给出的示例 `near ‘-mail,birthday) value(‘熊二’,‘123123’,‘1111111@qq.com’,‘1999-01-01’)’` 存在明显的语法错误,正确的插入语句应该使用 `VALUES` 而不是 `value`,并且列名可能有误(如 `-mail` 可能是拼写错误)。所以要仔细检查插入语句的语法,确保关键字拼写正确,列名和表名无误,以及括号、引号等符号使用正确。 示例错误语句: ```sql INSERT INTO haoyi_mrp.`xq_2025_11` -mail,birthday) value(&#39;熊二&#39;,&#39;123123&#39;,&#39;1111111@qq.com&#39;,&#39;1999-01-01&#39;); ``` 修正后的语句: ```sql INSERT INTO haoyi_mrp.`xq_2025_11` (email, birthday) VALUES (&#39;123123&#39;, &#39;1999-01-01&#39;); ``` ### 去除多余的分号 在某些情况下,多余的分号可能会导致语法错误。如引用[3]中提到,在 SQL 标签结束时习惯性加了分号,去掉该分号后不再报错。因此,要检查代码中 SQL 语句是否存在多余的分号。 示例错误代码: ```xml <sql id="insertData"> INSERT INTO haoyi_mrp.`xq_2025_11` (column1, column2) VALUES (&#39;value1&#39;, &#39;value2&#39;); </sql> ``` 修正后的代码: ```xml <sql id="insertData"> INSERT INTO haoyi_mrp.`xq_2025_11` (column1, column2) VALUES (&#39;value1&#39;, &#39;value2&#39;) </sql> ``` ### 检查列名和值的数量及类型 确保插入语句中列名的数量和顺序与提供的值的数量和顺序一致,并且数据类型匹配。例如,如果表中的某列是整数类型,插入时提供的必须是有效的整数值。 ### 检查表名和数据库名 确认表名 `xq_2025_11` 和数据库名 `haoyi_mrp` 正确,大小写也要注意,因为 MySQL 在不同的操作系统和配置下对大小写的敏感性不同。 ### 检查 MySQL 版本兼容性 不同版本的 MySQL 对 SQL 语法的支持可能会有细微差异。可以参考引用[2]中提到的,根据 MySQL 服务器版本查看对应的手册,以确定使用的语法是否正确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值