MyBatis的基本使用

本文介绍了MyBatis的基础映射配置,包括<Mapper>元素的使用,数据库连接配置的引入,以及SqlSessionFactoryBuilder和SqlSessionFactory的创建。还涵盖了关键API如Resource,用于加载配置文件,和SqlSession的CRUD操作示例。

映射配置文件

<?xml version="1.0" encoding="UTF-8" ?>

<!--MyBitis的DTD约束,定义xml标签约束,使开发者按照定义书写-->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--
    mapper:核心的根标签
    namespace:名称空间
-->
<mapper namespace="BookMapper">
    <!--
        select:查询功能的标签
        id属性:唯一的标识
        resultType属性:指定结果的映射对象的类型
        parameterType属性:指定参数映射对象类型
    -->
    <select id="selectAll" resultType="book">
        SELECT * FROM book
    </select>
    <select id="selectById" resultType="book" parameterType="int">
        SELECT * FROM book WHERE book_id = #{id}
    </select>
    <insert id="insert" parameterType="book">
        INSERT INTO book VALUES (#{book_id}, #{book_name}, #{book_author}, #{book_publisher})
    </insert>
    <update id="update" parameterType="book">
        UPDATE book SET book_name=#{book_name}, book_author=#{book_author} WHERE book_id=#{book_id}
    </update>
    <delete id="delete" parameterType="int">
        DELETE FROM book WHERE book_id=#{book_id}
    </delete>
</mapper>
  • 定义xml标签约束,使开发者按照定义书写

    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
  • mapper:核心根标签

    • namespace:命名空间
  • select:查询数据功能标签,

    • id属性:唯一标识
    • resultType属性:指定结果映射对象的类型
    • parameterType属性:指定参数映射对象的类型
  • insert:新增数据功能标签

    • id属性:唯一标识
    • parameterType属性:指定参数映射对象的类型
  • update:更新数据功能标签

    • id属性:唯一标识
    • parameterType属性:指定参数映射对象的类型
  • delete:删除数据功能标签

    • id属性:唯一标识
    • parameterType属性:指定参数映射对象的类型

数据库连接配置文件引入

  • <properties>:引入数据库连接配置文件标签

  • resource属性:数据库配置文件路径

  • 获取数据库连接参数

    ${键名}

  • 代码示例

    <properties resource="jdbc.properties" />
    

核心配置文件

<?xml version="1.0" encoding="UTF-8" ?>

<!--MyBitis的DTD约束,定义xml标签约束,使开发者按照定义书写-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration 根标签-->
<configuration>
	<!--引入数据库配置文件-->
    <properties resource="jdbc.properties" />
    <!--起别名-->
    <typeAliases>
        <typeAlias type="com.cmy.bean.Book" alias="book" />
    </typeAliases>
    <!--environments配置数据库环境,环境可以有很多个,而default属性则是指定某个环境-->
    <environments default="mysql1">
        <!--    environment数据库环境,id属性:唯一标识    -->
        <environment id="mysql1">
            <!--transactionManager事务管理,type 采用JDBC默认的事务管理-->
            <transactionManager type="JDBC" />
            <!--dataSource数据库源信息 type属性 连接池-->
            <dataSource type="POOLED">
                <!--property 获取数据库连接的配置信息-->
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>
    <!--mappers引入映射配置文件-->
    <mappers>
        <!--mapper 引入指定的配置文件,resource:指定映射配置文件名称-->
        <mapper resource="BookMapper.xml" />
    </mappers>
</configuration>
  • 定义xml标签约束,使开发者按照定义书写

    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    
  • configuration:根标签

  • typeAliases:为全类名起别名的父标签

    • typeAlias:为全类名起别名的子标签
      • type属性:指定全类名
      • alias属性:指定别名
    • package:为指定包下所有类起别名的子标签(别名就是类名)
      • <package name="com.cmy.bean" />
    • 此标签需写在核心配置文件里,在映射配置文件里就可以使用自定义的别名
  • environments:配置数据库环境标签

    • default属性:指定某个数据库环境
  • environment:数据库环境标签,可以定义多个

    • id属性:唯一标识
  • transactionManager:事务管理标签

    • type属性:指定事务管理类型
  • dataSource:数据库源信息标签

    • type属性:指定连接池
  • property:获取数据库连接的配置信息标签

    • name属性:配置参数的名称
    • value属性:配置参数的值
  • mappers:引入映射配置文件标签

  • mapper:引入指定的配置文件

    • resource属性:指定映射配置文件名称

相关API

Resource

  • org.apache.ibatis.io.Resource:加载资源的工具类

  • 核心方法

    方法名返回值说明
    getResourceAsStream(String fileName)InputStream通过类加载器返回指定资源的字节输入流
  • 代码示例

    InputStream is = Resources.getResourceAsStream("MyBatisConfig.xml");
    

SqlSessionFactoryBuilder

  • org.apache.ibatis.session.SqlsessionFactoryBuilder:获取 SqlSessionFactory工厂对象的功能类

  • 核心方法

    方法名返回值说明
    build(InputStream is)SqlSessionFactory通过指定资源字节输入流获取SqlSession工厂对象

SqlSessionFactory

  • org.apache.ibatis.session.SqlSessionFactory:获取SqlSession构建者对象的工厂接口

  • 核心方法

    方法名返回值说明
    SqlSessionopenSession()获取SqlSession构建者对象,需手动开启提交事务
    SqlSessionopenSession(boolean autoCommit)获取SqlSession构建者对象,如果参数为true,则开启自动开启提交事务
  • 代码示例

    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    

SqlSession

  • org.apache.ibatis.session.SqlSession:构建者对象接口,用于执行SQL语句、管理事务、和接口的代理

  • 核心方法

    方法名返回值说明
    ListselectList(String statement, Object paramter)执行查询语句,返回List集合
    TselectOne(String statement, Object paramter)执行查询语句,返回一个结果对象
    intinsert(String statement, Object paramter)执行插入语句,返回影响行数
    intupdate(String statement, Object paramter)执行更新语句,返回影响行数
    intdelete(String statement, Object paramter)执行删除语句,返回影响行数
    voidcommit()提交事务
    voidrollback()回滚事务
    TgetMapper(Class cls)获取指定接口的代理实现类对象
    voidclose()释放资源
  • 代码示例

    // 默认关闭自动提交事务
    SqlSession sqlSession = sqlSessionFactory.openSession();
    // 开启自动提交事务,可用于增删改操作
    SqlSession sqlSession = sqlSessionFactory.openSession(true);
    // 执行映射配置文件中的sql语句,并接收结果
    // 查询所有
    List<Book> books = sqlSession.selectList("BookMapper.selectAll");
    // 指定id查询
    Book book = sqlSession.selectOne("BookMapper.selectById", 2);
    // 插入
    Book book = new Book(4, "测试书籍", "无名氏","无出版社");
    int result = sqlSession.insert("BookMapper.insert", book);
    // 更新
    Book book = new Book(4, "改了名的书籍", "依然无名氏","无出版社");
    int result = sqlSession.insert("BookMapper.update", book);
    // 删除
    int result = sqlSession.delete("BookMapper.delete",4);
    // 释放资源
    sqlSession.close();
    is.close();
    
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员陈_明勇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值