项目结构
数据表结构
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.0modelVersion> <groupId>net.cybgroupId> <artifactId>cyb-mybatisartifactId> <version>1.0-SNAPSHOTversion> <dependencies> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatisartifactId> <version>3.5.4version> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>8.0.20version> dependency> <dependency> <groupId>org.slf4jgroupId> <artifactId>slf4j-log4j12artifactId> <version>1.7.30version> 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"> <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.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实体类对象中