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());
        }
    }
运行结果:

 
                    
                

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号