Mybatis 插入后获取主键
项目结构
数据表结构
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>net.cyb</groupId>
<artifactId>cyb-mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
</dependency>
</dependencies>
</project>
mybatis-config.xml
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 引入外部配置文件 -->
<properties resource="config/db.properties"></properties>
<!--下划线自动映射驼峰字段-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 数据库链接相关 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 添加映射文件 -->
<mapper resource="mapper/VideoMapper.xml" />
</mappers>
</configuration>
db.properties
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306/cybclass
db.username=root
db.password=root
log4j.properties
#dev env [debug] product env [info]
log4j.rootLogger=ERROR, stdout
# Console output...
# 细化到打印某个mapper
# log4j.logger.包名.方法名=TRACE
log4j.logger.net.cybclass.online=TRACE
#log4j.logger.net.cybclass.online.dao.VideoMapper.selectById=TRACE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
VideoMapper.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">
<!--
namespace:名称空间,一般需要保持全局唯一,最好是和dao层的java接口一致。可以映射sql语句到对应的方法名称和参数、返回类型
-->
<mapper namespace="net.cybclass.online.dao.VideoMapper">
<insert id="add" parameterType="net.cybclass.online.domain.Video">
insert into video (title,summary,cover_img,price,c_id,point,create_time) values
(#{title,jdbcType=VARCHAR},#{summary,jdbcType=VARCHAR},#{coverImg,jdbcType=VARCHAR},#{price,jdbcType=INTEGER},#{c_id,jdbcType=INTEGER},#{point,jdbcType=DOUBLE},#{create_time,jdbcType=TIMESTAMP})
</insert>
</mapper>
VideoMapper.java
package net.cybclass.online.dao; import net.cybclass.online.domain.Video;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import java.util.List; public interface VideoMapper {
/**
* 根据视频id查找视频对象
* @param videoId
* @return
*/
Video selectById(@Param("video_id") int videoId); /**
* 查询全部视频列表
* @return
*/
@Select("select * from video")
List<Video> selectList(); /**
* 查询全部视频列表
* @return
*/
List<Video> selectListByXml(); /**
* 根据评分和标题模糊查询
* @param point
* @param title
* @return
*/
List<Video> selectByPointAndTitleLike(@Param("point") double point,@Param("title") String title); /**
* 新增一个视频记录
* @param video
* @return
*/
int add(Video video);
}
Video.java
package net.cybclass.online.domain; import java.util.Date; /**
* 视频类
*/
public class Video {
//内码
private int id;
//视频标题
private String title;
//视频详情
private String summary;
//视频封面
private String coverImg;
//加个
private int price;
private int c_id;
//评分
private double point;
//创建日期
private Date create_time; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public String getSummary() {
return summary;
} public void setSummary(String summary) {
this.summary = summary;
} public String getCoverImg() {
return coverImg;
} public void setCoverImg(String coverImg) {
this.coverImg = coverImg;
} public int getPrice() {
return price;
} public void setPrice(int price) {
this.price = price;
} public int getC_id() {
return c_id;
} public void setC_id(int c_id) {
this.c_id = c_id;
} public double getPoint() {
return point;
} public void setPoint(double point) {
this.point = point;
} public Date getCreate_time() {
return create_time;
} public void setCreate_time(Date create_time) {
this.create_time = create_time;
} @Override
public String toString() {
return "Video{" +
"id=" + id +
", title='" + title + '\'' +
", summary='" + summary + '\'' +
", coverImg='" + coverImg + '\'' +
", price=" + price +
", c_id=" + c_id +
", point=" + point +
", create_time=" + create_time +
'}';
}
}
SqlSessionDemo.java
package net.cybclass.online; import net.cybclass.online.dao.VideoMapper;
import net.cybclass.online.domain.Video;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date; public class SqlSessionDemo {
public static void main(String[] args) throws IOException {
String resouce="config/mybatis-config.xml";
InputStream resourceAsStream = Resources.getResourceAsStream(resouce);
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
try(SqlSession session=build.openSession()){
VideoMapper mapper = session.getMapper(VideoMapper.class);
Video video=new Video();
video.setTitle("测试A");
video.setSummary("这是一条测试数据");
video.setCoverImg("www.baidu.com");
video.setC_id(6);
video.setPoint(8.88);
video.setPrice(98);
video.setCreate_time(new Date());
mapper.add(video);
session.commit();
}catch (Exception e){
e.printStackTrace();
}
}
}
主键返回
<insert id="add" parameterType="net.cybclass.online.domain.Video" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
insert into video (title,summary,cover_img,price,c_id,point,create_time) values
(#{title,jdbcType=VARCHAR},#{summary,jdbcType=VARCHAR},#{coverImg,jdbcType=VARCHAR},#{price,jdbcType=INTEGER},#{c_id,jdbcType=INTEGER},#{point,jdbcType=DOUBLE},#{create_time,jdbcType=TIMESTAMP})
</insert>
package net.cybclass.online; import net.cybclass.online.dao.VideoMapper;
import net.cybclass.online.domain.Video;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date; public class SqlSessionDemo {
public static void main(String[] args) throws IOException {
String resouce="config/mybatis-config.xml";
InputStream resourceAsStream = Resources.getResourceAsStream(resouce);
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
try(SqlSession session=build.openSession()){
VideoMapper mapper = session.getMapper(VideoMapper.class);
Video video=new Video();
video.setTitle("测试A");
video.setSummary("这是一条测试数据");
video.setCoverImg("www.baidu.com");
video.setC_id(6);
video.setPoint(8.88);
video.setPrice(98);
video.setCreate_time(new Date());
int rows=mapper.add(video);
session.commit();
System.out.println(rows);
System.out.println(video.toString());
}catch (Exception e){
e.printStackTrace();
}
}
}
插入的时候,自动就把id赋值给Video实体类对象中
Mybatis 插入后获取主键的更多相关文章
- myBatis插入oracle获取主键
<insert id="insert" parameterType="com.inspur.biz.entry.SpLackApply"> < ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- (转)Mybatis insert后返回主键给实体对象(Mysql数据库)
<insert id="insert" parameterType="com.zqgame.game.website.models.Team"> & ...
- Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了
insertSelective---Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了 https://www.cnblogs.com/xi ...
- mybatis中useGeneratedKeys用法--插入数据库后获取主键值
前言:今天无意在mapper文件中看到useGeneratedKeys这个词,好奇就查了下,发现能解决我之前插入有外键表数据时,这个外键获取繁琐的问题,于是学习敲DEMO记录 在项目中经常需要获 ...
- SpringBoot整合MyBatis获得插入数据后获取主键,返回值总是1
xml里的写法 <insert id="insertLogin" parameterType="com.xyt.p2p.pojo.LoginInfo" k ...
- MyBatis框架——mybatis插入数据返回主键(mysql、oracle)
向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是 ...
- mybatis insert后返回主键ID
需求: mybatis 在添加记录时需要获取到记录主键id id=0 无法获取主键id的值 在插入方法中添加如下属性和相应的值 <insert useGeneratedKeys="t ...
- Hibernate save或者persist 后获取主键ID
一个自增长ID的对象被save或者persist后,会返回其主键ID: Department department = new Department(); department.setName(&qu ...
随机推荐
- python教程3.3:字符和编码
1.二进制 计算机只能存储和识别二进制,但是人类常用的字母.数字.汉字怎么用计算机存储和识别呢? 人类强行约定一个对应表,把数字.字母和数字进行对应上,这样就可以用二进制表示字母和数字了. 2.ASC ...
- uniapp中正确使用echart
uniapp中不能直接使用百度echart,要么就只能嵌入html,然后在html中进入echart进行使用,这样非常不方便, 下面介绍这个插件,对百度echart进行局部小改造,使他能在uniapp ...
- Web3连接以太网
1. Infura Infura 是一种托管服务,提供对各种区块链网络的安全可靠访问,消除了管理区块链基础设施的复杂性,使开发者能够专注于构建创新的 Web3 应用程序. Infura 作为连接应用程 ...
- C 语言编程 — 输入/输出与文件操作
目录 文章目录 目录 前文列表 输入/输出 scanf() 和 printf() getchar() 和 putchar() 文件操作 打开文件 关闭文件 写入文件 读取文件 二进制 I/O 函数 前 ...
- Java 中的深拷贝和浅拷贝你了解吗?
前言 Java 开发中,对象拷贝是常有的事,很多人可能搞不清到底是拷贝了引用还是拷贝了对象.本文将详细介绍相关知识,让你充分理解 Java 拷贝. 一.对象是如何存储的? 方法执行过程中,方法体中的数 ...
- mvc5接口报错:The JSON request was too large to be deserialized的一种原因
是mvc5版本的接口,接口使用了dynamic接收数组,json对象数组只有56个,length长度不到10万,但是提交就报The JSON request was too large to be d ...
- IceRPC之多路复用传输>快乐的RPC
作者引言 很高兴啊,我们来到了IceRPC之多路复用传输>快乐的RPC,基础引导,打好基础,才能让自已不在迷茫,快乐的畅游世界. icerpc 和多路复用传输 了解 icerpc 协议和多路复用 ...
- 将python文件转换成exe可执行文件
一.安装Pyinstaller pip install pyinstaller(Pyinstaller) 二.找到 .py文件的路径并执行如下命令 pyinstaller -F 要转换的文件.py 三 ...
- CSS——阴影
<!DOCTYPE html> <html> <head> <style> p.one { text-shadow: 3px 5px 5px #FF00 ...
- WNS 后台Push服务调试脚本
一.API说明 https://cloud.tencent.com/document/product/276/3212 二.推送脚本 #!/usr/local/bin/python3 # -*- ...