码迷,mamicode.com
首页 > 其他好文 > 详细

Mybatis

时间:2016-09-18 12:00:15      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:

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 mapper
PUBLIC "-//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 configuration
PUBLIC "-//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 mapper
PUBLIC "-//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 mapper
PUBLIC "-//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 mapper
PUBLIC "-//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 mapper
PUBLIC "-//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

标签:

原文地址:http://www.cnblogs.com/S2223/p/5880945.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!