美文网首页
二、Mybatis实现对数据库的增删改查

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

作者: AlanQN | 来源:发表于2018-07-15 10:01 被阅读0次

    准备工作:

    如果还没有完成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

    相关文章

      网友评论

          本文标题:二、Mybatis实现对数据库的增删改查

          本文链接:https://www.haomeiwen.com/subject/bqaupftx.html