Mybatis学习笔记

  1. Mybatis是一个基于java的持久层框架,主要是用来做数据库的访问操作,它通过XML描述符或注解把对象与SQL语句关联起来。

    1. Jdbc做数据访问操作的缺点(获取链接、创建statement、设置值、释放资源)

      1. 代码冗余大,开发效率低下

      2. sql命令定义在java程序里,如果sql发生改变会导致代码的重新编译

      3. 所有O-R mapping的动作都需要手动完成

    2. Mybatis框架

      1. 框架:对现有代码的合理封装,便于后续重复调用,提高开发效率。

  2. Mybatis体系结构

    1. Mybatis提供了一个映射文件--mapper文件(向Mybatis提出功能要求)

interface AccountDao{

    public void insertAccount(Account a);

}

----jdbc操作

public class AccountDaoImpl implements AccountDao{

    public void insertAccount(Account a){

        Connection conn = null;

        PreparedStatement pstm = null;

        try{

            conn = JdbcUtil.getConnection();

            String sql = "insert .....";

            pstm = conn.prepareStatement(sql);

            pstm.setXXX();

            pstm.executeUpdate();

        }catch(Exception e){

            ......

        }finally{

            JdbcUtil.close(null,pstm,null)

        }

    }

}

 

----mybatis操作  通过mapper文件完成功能,文件名后缀为xml

<mappper namespace="包名.AccountDao">

    <insert id = "DAO中所要实现的方法名(例如insertAccount)" parameterType="方法参数的类型,如果是对象要写全限定名"> 

                <!-- 插入动作时。对象的主键为null,需要查询数据库的序列中得到主键值 -->

        <selectKey resultType="java.lang.Integer" keyProperty="对象的id属性名" order="BEFORE">

            select account_seq.nextval from dual

        </selectKey>       

        insert sql命令(命令里通过#{对象属性名}获取对象属性)

    </insert>

</mapper>

            2.    MyBatis根据给定的mapper文件自动生成相应的java实现类

 

搭建mybatis开发环境

  1. 引入mybatis需要的jar包

    1. mybatis3.2.2.jar     ojdbc5.jar      log4j-1.2.17.jar(打印日志)

  2. 配置文件mybatis-config.xml

 

    3.Mybatis的核心类

    SqlSessionFactoryBuilder:负责加载mybatis-config.xml文件内容

    SqlSessionFactory:负责构建SqlSession

    SqlSession:一次数据库“会话”,包含了多次数据库访问操作,相当于jdbc里的Connection。

 

开发第一个MyBatis程序

 

* 0:准备数据库环境(建库,建表)搭建MyBatis开发环境,导入MyBatis相关jar包到项目classpath中,导入mybatis-config.xml配置文件到src下。

* 1:创建一个表Table 所对应的实体Entity

* 2:定义数据库访问层接口DAO

* 3:书写SqlMapper配置文件(本质上实在书写DAO的实现类,所以命名为XXXDAOImpl.xml)

    具体内容如上面mybatis操作。

* 4:将Mapper映射文件注册到mybatis-config.xml配置文件中

<mappers>

    <mapper resource="此处需要映射文件路径,从src下开始写(例如:dao/PersonDaoImpl.xml)"></mapper>

</mappers>

* 5:Java测试代码

  1. 创建SqlSessionFactoryBuilder的功能--->负责加载mybatis-config.xml文件

SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

       2. 调用builder的build方法加载配置文件,同时读到内存中保存在SqlSessionFactory对象中

SqlSessionFactory factory = builder.build(reader);

       3. 获取sqlSession对象

SqlSession session = factory.openSession();

       4. 调用session的getMapper()可以得到mybatis生成的接口的实现类

XxxDao dao = session.getMapper(XxxDao.class);

       5. 将业务提交并关闭session会话

session.commit();

session.close();

 

Select方法

Dao中查询方法

Mapper配置文件

 

<select id="方法名" parameter="方法参数的类型" resultType="方法返回值类型,要全类名">

    select 表里字段名 as 结果字段名,....from 表名 where 条件

</select>

注意:mybatis会自动将结果集里的数据封装成指定返回值类型的对象。

    封装时,将结果里的字段值设置到对象的相应属性里,要求结果字段名和对象的属性名保持一致。

 

update操作

Dao中方法

public coid updateAccount(Account a);

Mapper中

<update id="updateAccount" parameterType="day1.Account">

    update account set name=#{name},password=#{password},balance=#{balance} where carid=#{carid}

</update>

 

Delete操作

Dao中

public void deleteAccount(Integer cardId);

mapper中

<delete id="deleteAccount" parameterType="java.lang.Integer">

    delete from account where cardid=#{cardId}

</delete>

 

高级查询

  1. 查询有多个参数

    1. mapper文件中不能使用parameterType属性

    2. 接口的方法声明中,对每个参数使用@Param(value="参数别名")

    3. mapper文件中的sql,绑定参数#{参数别名}

上图中的@Param(value="a2")相当于@Param("a2")

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值