MyBatis入门

01.MyBatis简介

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

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

搭建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());
        }
    }

运行结果:

 

posted @ 2016-09-18 15:35  Onlyだ  阅读(148)  评论(0编辑  收藏  举报