项目结构

数据表结构

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 插入后获取主键的更多相关文章

  1. myBatis插入oracle获取主键

    <insert id="insert" parameterType="com.inspur.biz.entry.SpLackApply"> < ...

  2. Java MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  3. MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  4. (转)Mybatis insert后返回主键给实体对象(Mysql数据库)

    <insert id="insert" parameterType="com.zqgame.game.website.models.Team"> & ...

  5. Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了

    insertSelective---Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了 https://www.cnblogs.com/xi ...

  6. mybatis中useGeneratedKeys用法--插入数据库后获取主键值

    前言:今天无意在mapper文件中看到useGeneratedKeys这个词,好奇就查了下,发现能解决我之前插入有外键表数据时,这个外键获取繁琐的问题,于是学习敲DEMO记录    在项目中经常需要获 ...

  7. SpringBoot整合MyBatis获得插入数据后获取主键,返回值总是1

    xml里的写法 <insert id="insertLogin" parameterType="com.xyt.p2p.pojo.LoginInfo" k ...

  8. MyBatis框架——mybatis插入数据返回主键(mysql、oracle)

    向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是 ...

  9. mybatis insert后返回主键ID

    需求: mybatis  在添加记录时需要获取到记录主键id id=0 无法获取主键id的值 在插入方法中添加如下属性和相应的值 <insert useGeneratedKeys="t ...

  10. Hibernate save或者persist 后获取主键ID

    一个自增长ID的对象被save或者persist后,会返回其主键ID: Department department = new Department(); department.setName(&qu ...

随机推荐

  1. 更新package.json里所有模块

    安装该插件 cnpm install -g npm-check-updates 或者 npm install -g npm-check-updates 在有package.json的目录执行 npm- ...

  2. cesium基础知识汇总PPT版

    以上教程来自火星科技,原视频教程地址如下: https://ke.qq.com/course/468292/3985600802137412#term_id=100560563

  3. ip地址、子网掩码、网关、dns简介

    IP地址IPADDR: IP地址是唯一的标识,是一段网络编码(二进制),由32位组成. IP 是 Internet Protocol(网际互连协议)的缩写,是 TCP/IP 体系中的网络层协议. IP ...

  4. Vue 渲染模板时怎么保留模板中的HTML 注释呢?

    在组件中将 comments 选项设置为 true ...

  5. Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析

    一.类型(Types) 一.OpenPopupOptions 1. 属性 windowId: number 可选 打开操作弹出式窗口的窗口 ID.如果未指定,则默认为当前活动窗口. 二.TabDeta ...

  6. AIRIOT物联网低代码平台如何配置Modbus TCP协议?

    AIRIOT物联网低代码平台稳定性超高,支持上百种驱动,各种主流驱动已在大型项目中通过验证,持续稳定运行. AIRIOT物联网低代码平台如何配置Modbus TCP协议?操作如下: AIRIOT与西门 ...

  7. fuser命令详解

    fuser -mv 作用 fuser命令是用来显示所有正在使用着指定的file.file system或者sockets的进程信息.具体来说,fuser -mv的作用如下: 参数-m:指定一个被加载的 ...

  8. 一文带你了解.NET能做什么?

    前言 在DotNetGuide技术社区微信交流群经常看到有小伙伴问:.NET除了能写桌面应用和Web应用还能做什么?今天大姚将通过本篇文章来简单讲讲.NET能做哪些开发,对.NET感兴趣的小伙伴也可以 ...

  9. FFmpeg中的关键方法及结构体(二)avformat_open_input

    1.avformat_open_input 该方法声明在libavformat/avformat.h:2093 int avformat_open_input(AVFormatContext **ps ...

  10. SMOGN算法Python实现:解决回归分析中的数据不平衡

      本文介绍基于Python语言中的smogn包,读取.csv格式的Excel表格文件,实现SMOGN算法,对机器学习.深度学习回归中,训练数据集不平衡的情况加以解决的具体方法.   在不平衡回归问题 ...