准备工作:
如果还没有完成Mybatis的核心配置,请参考“一、Mybatis核心配置”,先自行完成Mybatis的核心配置。
此外,为了测试Mybatis对数据库的增删改查操作,我们需要先创建一个名为“demo1”的数据库,再创建一个名为“dept”的表。创建表的sql文件内容为:
-- ----------------------------
-- Table structure for dept
-- ----------------------------
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
`DEPTNO` int(2) NOT NULL AUTO_INCREMENT,
`DNAME` varchar(20) DEFAULT NULL,
`LOC` varchar(30) DEFAULT NULL,
PRIMARY KEY (`DEPTNO`)
) ENGINE=InnoDB AUTO_INCREMENT=51DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES ('10','ACCOUNTING', 'NEW YORK');
INSERT INTO `dept` VALUES ('20','RESEARCH', 'DALLAS');
INSERT INTO `dept` VALUES ('30','SALES', 'CHICAGO');
INSERT INTO `dept` VALUES ('40','OPERATIONS', 'BOSTON');
当然,你也可以使用自己已经创建好的数据库和表,此时你需要修改相应的配置文件中的配置信息。注意:此处我们使用的数据库是MySQL,如需使用其它数据库,请自行更改相应的配置信息。
1. 配置实体类
在src/main/java目录下(如果是普通java项目,则在src目录下,这里默认是Maven项目),创建名为“com.domain”的package,在该package中创建名为“Dept”的实体类,内容如下:
package com.domain;
public class Dept {
private Integer deptNo;
private String dname;
private String loc;
public Integer getDeptNo() {
return deptNo;
}
public void setDeptNo(Integer deptNo) {
this.deptNo = deptNo;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
@Override
public String toString() {
return "Dept [deptNo=" + deptNo + ", dname=" + dname + ", loc=" + loc + "]";
}
}
效果图如下:
创建实体类2. 配置映射文件
在src/main/resources目录下,创建名为“mapper”的package,在该package中创建名为“DeptMapper.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.domain.Dept">
<select id="selectDept" parameterType="Integer" resultType="com.domain.Dept">
select * from dept where deptno = #{deptno}
</select>
<insert id="insertDept" parameterType="com.domain.Dept">
insert into dept values(#{deptNo}, #{dname}, #{loc})
</insert>
<update id="updateDept" parameterType="com.domain.Dept">
update dept set dname=#{dname}, loc=#{loc} where deptno=#{deptNo}
</update>
<delete id="deleteDept" parameterType="Integer">
delete from dept where deptno=#{deptno}
</delete>
</mapper>
然后在Mybatis配置文件“mybatis.xml”中,添加该映射文件,如图所示:
添加映射文件3. 实现新增功能,实现代码如下:
package com.test;
import java.io.IOException;
import java.io.InputStream;
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 com.domain.Dept;
public class Test {
public static void main(String[] args) {
SqlSession session = null;
try {
//配置文件路径
String resource = "mybatis.xml";
//读取配置文件
InputStream is = Resources.getResourceAsStream(resource);
//获取SqlSessionFactory对象
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
//获取SqlSession对象
session = ssf.openSession();
//执行添加
Dept dept = new Dept();
dept.setDeptNo(50);
dept.setDname("Technology");
dept.setLoc("Huston");
session.insert("insertDept", dept);
session.commit();
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭Session
if (session != null)
session.close();
}
}
}
执行完成后,可以使用Navicat查看dept表新增了一条记录,这说明我们成功实现了新增功能,如图所示:
成功添加deptno为50的记录4. 实现修改功能,核心代码如下:
//配置文件路径
String resource = "mybatis.xml";
//读取配置文件
InputStream is = Resources.getResourceAsStream(resource);
//获取SqlSessionFactory对象
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
//获取SqlSession对象
SqlSession session = ssf.openSession();
//执行修改
Dept dept = session.selectOne("selectDept", 50);
dept.setDname("TECHNOLOGY");
dept.setLoc("HUSTON");
session.update("updateDept", dept);
session.commit();
执行成功后,我们可以查询出这条记录,来确定我们修改成功,至于如何查询,请往下看。
5. 实现查询功能,核心代码如下:
//配置文件路径
String resource = "mybatis.xml";
//读取配置文件
InputStream is = Resources.getResourceAsStream(resource);
//获取SqlSessionFactory对象
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
//获取SqlSession对象
SqlSession session = ssf.openSession();
//查询deptno为50的dept
Dept dept = session.selectOne("selectDept", 50);
System.out.println(dept);
执行结果如图所示:
成功修改deptno为50的记录6. 实现删除功能,核心代码如下:
//配置文件路径
String resource = "mybatis.xml";
//读取配置文件
InputStream is= Resources.getResourceAsStream(resource);
//获取SqlSessionFactory对象
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
//获取SqlSession对象
SqlSession session = ssf.openSession();
//执行删除
session.delete("deleteDept", 50);
session.commit();
执行成功之后,我们可以发现,在Navicat中已经没有deptno为50的记录了,说明我们已经删除成功了,如图所示:
成功删除deptno为50的记录至此,我们简单地使用Mybatis实现了对数据库的增删查改的功能。
参考资料:
网友评论