二、Mybatis实现对数据库的增删改查

2018-07-15  本文已影响0人  AlanQN

准备工作:

如果还没有完成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实现了对数据库的增删查改的功能。

参考资料:

    http://www.mybatis.org/mybatis-3/getting-started.html

上一篇下一篇

猜你喜欢

热点阅读