首页 > 代码库 > Mybatis

Mybatis

MyBatis

MyBatis简介:

1.MyBatis本是apache的一个开源网站,

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

3.MyBatis小巧,简单易学

一.使用MyBatis实现查询部门信息的案例

  步骤一:在项目中导入JAR包,并且配置jar包

  技术分享

  步骤二:创建实体类Dept以及Dept.xml小配置文件

  

/* * 部门实体类 */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;    }    @Override    public String toString() {        return "Dept [deptNo=" + deptNo + ", deptName=" + deptName + "]";    }    }
<!--Dept.xml--><?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.a.entity.Dept"><!-- id:唯一标识:通过此id,程序可唯一锁定一条SQL      parameterType:参数类型     resultType:结果类型-->    <!-- 查询所有部门信息 -->    <select id="selectDept" resultType="cn.a.entity.Dept">        select * from dept    </select></mapper>

  步骤三:编写mybatis-config.xml大配置文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <environments default="development">        <environment id="development">        <!-- 事务策略是JDBC -->            <transactionManager type="JDBC" />            <!-- 数据源的方式 -->            <dataSource type="POOLED">                <property name="driver" value="oracle.jdbc.OracleDriver" />                <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />                <property name="username" value="Hibernate" />                <property name="password" value="orcl" />            </dataSource>        </environment>    </environments>    <!--映射文件:描述某个实体和数据库表的对应关系 -->    <mappers>        <mapper resource="cn/a/entity/Dept.xml" />    </mappers></configuration>

  步骤四:编写测试类,查询所有部门信息

 

SqlSession session;    @Before    public void before() throws IOException    {             //1.1构建在Hibernate中的DB Connection的Sessuin对象                //session-->SQLSessionFactory-->SQLSessionFactoryBuilder                Reader reader=Resources.getResourceAsReader("mybatis-config.xml");                SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);                session= factory.openSession();    }

 

/**     * 查询所有部门信息     * @throws Exception     */    @Test    public void selectDeptTest() throws Exception    {
     //在Dept.xml文件指定了返回值类型为Dept强类型所以用List<Dept>接收 List
<Dept> selectList = session.selectList("selectDept"); for (Dept dept : selectList) { System.out.println(dept); } }

  运行效果如下:

  技术分享

 

 

二.使用MyBatis添加部门,添加deptNo为2,deptName为人力部的部门信息

因为我们上面第一个演示案例不用再重复之前的步骤,只需要将小配置文件修改以及将测试类代码修改即可

  Dept.xml文件:

 

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.a.entity.Dept"><!-- id:唯一标识:通过此id,程序可唯一锁定一条SQL      parameterType:参数类型     resultType:结果类型-->    <!-- 查询所有部门信息 -->    <select id="selectDept" resultType="cn.a.entity.Dept">        select * from dept    </select>    <!-- 添加部门信息 -->    <insert id="insertDept" parameterType="cn.a.entity.Dept">        insert into dept values(2,#{deptName})    </insert></mapper>

 

这里不再使用?占位,而是使用#{deptName}的形式

  编写测试类

 

/**     * 添加部门信息     */    @Test    public void insertDeptTest()    {        Dept dept=new Dept();        dept.setDeptName("人力部");        int insert = session.insert("cn.a.entity.Dept.insertDept",dept);        System.out.println(insert);        session.commit();    }

 

在DB端的运行结果如下:

  技术分享

三.使用Mybatis修改数据,修改deptNo为2的部门,将deptName修改为测试部

因为我们上面第一个演示案例不用再重复之前的步骤,只需要将小配置文件修改以及将测试类代码修改即可

  Dept.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.a.entity.Dept"><!-- id:唯一标识:通过此id,程序可唯一锁定一条SQL      parameterType:参数类型     resultType:结果类型-->    <!-- 查询所有部门信息 -->    <select id="selectDept" resultType="cn.a.entity.Dept">        select * from dept    </select>    <!-- 添加部门信息 -->    <insert id="insertDept" parameterType="cn.a.entity.Dept">        insert into dept values(2,#{deptName})    </insert>    <!-- 修改部门信息 -->    <update id="updateDept" parameterType="cn.a.entity.Dept">        update dept set deptName=#{deptName} where deptNo=#{deptNo}    </update></mapper>

  测试类代码

/**     * 修改部门     */    @Test    public void updateDeptTest()    {        Dept dept=new Dept();        dept.setDeptNo(2);        dept.setDeptName("测试部");        int update = session.update("cn.a.entity.Dept.updateDept",dept);        System.out.println(update);        session.commit();    }

运行结果如下

技术分享

四.使用MyBatis删除数据,删除编号为2的部门

因为我们上面第一个演示案例不用再重复之前的步骤,只需要将小配置文件修改以及将测试类代码修改即可

  Dept.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.a.entity.Dept"><!-- id:唯一标识:通过此id,程序可唯一锁定一条SQL      parameterType:参数类型     resultType:结果类型-->    <!-- 查询所有部门信息 -->    <select id="selectDept" resultType="cn.a.entity.Dept">        select * from dept    </select>    <!-- 添加部门信息 -->    <insert id="insertDept" parameterType="cn.a.entity.Dept">        insert into dept values(2,#{deptName})    </insert>    <!-- 删除部门信息 -->    <delete id="deleteDept" parameterType="cn.a.entity.Dept">        delete from dept where deptNo=#{deptNo}    </delete>    <!-- 修改部门信息 -->    <update id="updateDept" parameterType="cn.a.entity.Dept">        update dept set deptName=#{deptName} where deptNo=#{deptNo}    </update></mapper>

  测试端代码

 

/**     * 删除部门     */    @Test    public void deleteDeptTest()    {        Dept dept=new Dept();        dept.setDeptNo(2);        int delete = session.delete("cn.a.entity.Dept.deleteDept",dept);        System.out.println(delete);        session.commit();    }

运行结果如下

技术分享

五.模糊查询,查询部门名称带部字的信息

  Dept.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.a.entity.Dept"><!-- id:唯一标识:通过此id,程序可唯一锁定一条SQL      parameterType:参数类型     resultType:结果类型-->    <!-- 查询所有部门信息 -->    <select id="selectDept" resultType="cn.a.entity.Dept">        select * from dept    </select>    <!-- 添加部门信息 -->    <insert id="insertDept" parameterType="cn.a.entity.Dept">        insert into dept values(2,#{deptName})    </insert>    <!-- 删除部门信息 -->    <delete id="deleteDept" parameterType="cn.a.entity.Dept">        delete from dept where deptNo=#{deptNo}    </delete>    <!-- 修改部门信息 -->    <update id="updateDept" parameterType="cn.a.entity.Dept">        update dept set deptName=#{deptName} where deptNo=#{deptNo}    </update>    <!-- 模糊查询 -->    <select id="likeDept" resultType="cn.a.entity.Dept" parameterType="cn.a.entity.Dept">        select * from dept where deptName like ‘%${deptName}%‘    </select></mapper>

这里需要注意like后面跟的‘%${deptName}%‘

  测试类代码

 

/**     * 模糊查询     */    @Test    public void likeDeptTest()    {        Dept dept=new Dept();        dept.setDeptName("部");        List<Dept> selectList = session.selectList("cn.a.entity.Dept.likeDept", dept);        for (Dept item : selectList) {            System.out.println(item);        }        }

 

运行结果如下

技术分享

 

Mybatis