• MyBatis入门案例


    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

    iBatis是半ORM映射框架,它需要在数据库里手动建表,CURD操作时要自己写SQL语句,而Hibernate是全ORM映射框架,它只需要配置好文件,表会自动生成,CURD的SQL语句也是自动生成的,这是他们的主要区别。

    搭建MyBatis 首先需要引入jar包

    搭建小配置文件

    <?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">
    <!-- namespace:隔离同名类 -->
    <mapper namespace="cn.happy.entity.Dept">

    其次是搭建大配置文件,并与小配置相关联

    复制代码
    <?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">
              <!-- tx use jdbc's  -->
                <transactionManager type="JDBC" />
              <dataSource type="POOLED">
                    <property name="driver" value="oracle.jdbc.OracleDriver" />
                    <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" ></property>
                    <property name="username" value="****" />
                    <property name="password" value="****" />
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="cn/happy/entity/Dept.xml" />
            <mapper resource="cn/happy/entity/getMapper.xml" />
        </mappers>
    </configuration>
    复制代码
    创建实体类,并封装
    复制代码
    package cn.happy.entity;
    
    public class Dept {
        private Integer deptno;//部门编号
        private String deptname;//部门名称
        public Integer getDeptno() {
            return deptno;
        }
        public void setDeptno(Integer deptno) {
            this.deptno = deptno;
        }
        public String getDeptname() {
            return deptname;
        }
        public void setDeptname(String deptname) {
            this.deptname = deptname;
        }
    }
    复制代码

    最后书写测试类

    小配置:

    <select id="selectDept" resultType="cn.happy.entity.Dept">
         <!-- SQL  列名,表名和数据库表 不区分大小写
                   记录是区分的:  oa  OA
          -->
            select * from Y2162Dept
        </select>

    测试类:

    复制代码
    static SqlSession session;
        @Before
        public void initData() throws Exception{
            SqlSessionFactoryBuilder sb=new SqlSessionFactoryBuilder();
            Reader reader=new FileReader("src/mybatis-config.xml");
            SqlSessionFactory factory = sb.build(reader);
            session = factory.openSession();
        }
    
        @Test  //检索所有部门名称
        public void testSelectDept() throws Exception{
            
            List<Dept> list = session.selectList("selectDept");
            for (Dept dept : list) {
                System.out.println(dept.getDeptname());
            }
            session.close();
        }
    复制代码

    运行结果:

    小配置:

    复制代码
    <insert id="insertDept" parameterType="cn.happy.entity.Dept">  //添加数据
        
                insert into Y2162Dept values(#{deptno},#{deptname})
        
        </insert>
    
        <update id="updateDeptById" parameterType="cn.happy.entity.Dept">  //按部门编号修改部门名称
           update Y2162Dept set deptname=#{deptname} where deptno=#{deptno}
        </update>
    
        <delete id="deleteDeptById" parameterType="cn.happy.entity.Dept">  //按部门编号删除部门
           delete from Y2162Dept where deptno=#{deptno}
        </delete>
    复制代码

    测试类:

    复制代码
        //增加
        @Test
        public void testInsertDept() throws Exception{
            Dept dt=new Dept();
            dt.setDeptno(22);
            dt.setDeptname("月饼部");
        
            int count = session.insert("insertDept", dt);
            session.commit();
            System.out.println(count);
            session.close();
        }
        
        
        
        //修改
        @Test
        public  void testupdateDeptById() throws Exception{
            Dept dt=new Dept();
            dt.setDeptno(101);
            dt.setDeptname("月饼不");
            int count = session.update("updateDeptById",dt);
            session.commit();
            System.out.println(count);
            session.close();
        }
        
        
        //删除
        @Test
        public  void testdeleteDeptById() throws Exception{
            Dept dt=new Dept();
            dt.setDeptno(101);
            int count = session.delete("deleteDeptById",dt);
            session.commit();
            System.out.println(count);
            session.close();
        }
        
    复制代码

    还可以通过getMapper()方法查询数据

    创建一个接口IDeptDao

    复制代码
    package cn.happy.dao;
    
    import java.util.List;
    
    import cn.happy.entity.Dept;
    
    public interface IDeptDao {
    
        public List<Dept> getAllDepts();
    }
    复制代码

    创建getMapper.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">
    <!-- namespace:隔离同名类 -->
    <mapper namespace="cn.happy.dao.IDeptDao">
    <select id="getAllDepts" resultType="cn.happy.entity.Dept">
        select * from Y2162Dept
    </select>
    </mapper>
    复制代码

    测试类代码:

    复制代码
        //使用getMapper()检索所有数据
        @Test
        public void testgetAllDepts(){
            IDeptDao mapper = session.getMapper(IDeptDao.class);
            List<Dept> list=mapper.getAllDepts();
            for (Dept dept : list) {
                System.out.println(dept.getDeptname());
            }
        }
    复制代码

    运行结果:

  • 相关阅读:
    vue loading 插件编写与实战
    vue tab切换的几种方式
    IOS安卓常见问题
    vue.js 跨域的解决方法(转载)
    vue 根据设计稿rem适配
    vuex 文件夹目录整理
    vue项目优化之路由懒加载
    flutter 环境配置-01
    锚点 定位 导航 滑动
    居中 子元素无固定 宽高
  • 原文地址:https://www.cnblogs.com/hero96/p/5882201.html
Copyright © 2020-2023  润新知