使用Mybatis向Mysql数据库中插入数据,并返回自增的id
首先,在mysql数据库的仓库中,新增一张project_case表,来存储测试用例的相关信息,如下图所示:
1.在pom.xml中将依赖的包导入进来
<!--MyBatis驱动包-->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- Mysql驱动包 -->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
2.新建一个ProjectCase类,里面存放新增一条用例需要的参数和方法
public class ProjectCase {
private Integer id;
private String sign;
private String name;
private Integer projectid;
private Integer moduleid;
private Integer projectindex;
private Date time;
private String operationer;
private Integer casetype;
private String remark;
private Integer failcontinue;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getProjectid() {
return projectid;
}
public void setProjectid(Integer projectid) {
this.projectid = projectid;
}
public Integer getModuleid() {
return moduleid;
}
public void setModuleid(Integer moduleid) {
this.moduleid = moduleid;
}
public Integer getProjectindex() {
return projectindex;
}
public void setProjectindex(Integer projectindex) {
this.projectindex = projectindex;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public String getoperationer() {
return operationer;
}
public void setoperationer(String operationer) {
this.operationer = operationer;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Integer getFailcontinue() {
return failcontinue;
}
public void setFailcontinue(Integer failcontinue) {
this.failcontinue = failcontinue;
}
public Integer getCasetype() {
return casetype;
}
public void setCasetype(Integer casetype) {
this.casetype = casetype;
}
}
3.创建一个接口和接口实现类
public interface ProjectCaseDao {
public int insert(ProjectCase projectCase);
public int update(ProjectCase projectCase);
public int delete(int projectid);
public List<ProjectCase> selectAll();
public int countAll();
public ProjectCase findById(int id);
}
public class ProjectCaseDaoImpl implements ProjectCaseDao {
@Override
public int insert(ProjectCase projectCase) {
try {
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.insert("insertProjectCase",projectCase);
sqlSession.commit();
} catch (IOException e) {
e.printStackTrace();
}
return 0;
}
@Override
public int update(ProjectCase projectCase) {
return 0;
}
@Override
public int delete(int projectid) {
return 0;
}
@Override
public List<ProjectCase> selectAll() {
return null;
}
@Override
public int countAll() {
return 0;
}
@Override
public ProjectCase findById(int id) {
return null;
}
}
4.创建一个ProjectCaseMapper.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="com.ctrip.ai.guidebot.dao.ProjectCaseDao">
<select id="countAll" resultType="int">
select count(*) c from project_case;
</select>
<select id="selectAll" resultType="com.ctrip.ai.guidebot.domain.ProjectCase">
select * from project_case order by id asc
</select>
<insert id="insertProjectCase" useGeneratedKeys="true" keyProperty="id" parameterType="com.ctrip.ai.guidebot.domain.ProjectCase">
insert into project_case(sign,name, projectid,moduleid,projectindex,time,operationer,casetype,remark,failcontinue) values(#{sign},#{name},#{projectid},#{moduleid},#{projectindex},#{time},#{operationer},#{casetype},#{remark},#{failcontinue})
</insert>
<update id="update" parameterType="com.ctrip.ai.guidebot.domain.ProjectCase">
update project_case set id=#{id},sign=#{sign},name=#{name}, projectid=#{projectid},moduleid=#{modleid}, projectindex=#{projectindex}, time=#{time},operationer=#{operationer},
remark=#{remark},failcontinue=#{failcontinue} where id=#{id}
</update>
<delete id="delete" parameterType="int">
delete from project_case where id=#{id}
</delete>
<select id="findById" parameterType="Integer" resultType="com.ctrip.ai.guidebot.domain.ProjectCase">
select * from project_case where id=#{id}
</select>
</mapper>
5.创建一个mybatis.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://10.32.1.150:3306/luckyframedb?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/ProjectCaseMapper.xml"/>
</mappers>
</configuration>
6.新建一个测试类,来测试往mysql中新增一条数据
public class TestInsertProjectCase {
public static void main(String[] args) {
ProjectCase projectCase = new ProjectCase();
// System.out.println("插入前主键ID为:" +projectCase.getId());
projectCase.setSign("GUIDEBOT-44");
projectCase.setCasetype(0);
projectCase.setFailcontinue(0);
projectCase.setModuleid(137);
projectCase.setName("这是个程序输入的测试用例113");
projectCase.setoperationer("fanny");
projectCase.setProjectid(104);
projectCase.setProjectindex(30);
projectCase.setRemark("fanny test");
projectCase.setTime(new Date());
ProjectCaseDao dao = new ProjectCaseDaoImpl();
dao.insert(projectCase);
System.out.println("插入后的主键ID为:" + projectCase.getId());
}
}
执行后,返回新增数据的主键,如下图所示:
文件的组织结构如下: