11、JavaEE---MyBatis核心配置与单表的增删改查

目录

什么是MyBatis

MyBatis文档地址:

MyBatis工作原理 

MyBatis入门程序--实现专业信息的增删改查 

1、开发步骤--映射文件 

2、开发步骤--接口引用 

3、开发步骤--注解开发 

MyBatis核心API 

1)SqlSessionFactoryBuilder

2)SqlSessionFactory

3)SqlSession

MyBatis核心配置文件

1、元素

2、元素

3、元素

4、元素

1、事务管理器的配置

2、数据源类型的配置

 5、元素

6、映射文件

​编辑

7、 元素元素--常用属性

8、元素、和元素 

9、元素


什么是MyBatis

  •  MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
  • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO为数据库中的记录。

MyBatis文档地址:

mybatis – MyBatis 3 | 简介

最新版本: 3.5.13 

MyBatis工作原理 

MyBatis入门程序--实现专业信息的增删改查 

已知,computer_dept数据库中专业表tb_major的基本结构如下:

使用MyBatis实现专业信息的增删改查

1、开发步骤--映射文件 

1、引入jar包:mysql及mybatis

2、创建全局配置文件mybatis-config.xml,配置数据源、引入映射文件等

3、创建映射文件MajorMapper.xml

4、编写测试类

  • 获取SqlSession对象
  • 调用SqlSession对象的增删改查方法实现专业信息的基本操作

2、开发步骤--接口引用 

1、引入jar包:mysql及mybatis

2、创建全局配置文件mybatis-config.xml,配置数据源、引入映射文件等

3、创建映射文件MajorMapper.xml及映射接口MajorMapper,二者对应

4、编写测试类

  • 获取SqlSession对象
  • 调用SqlSession对象的getMapper方法,获取MajorMapper应用对象
  • 调用MajorMapper的方法实现增删改查专业功能

3、开发步骤--注解开发 

1、引入jar包:mysql及mybatis

2、创建全局配置文件mybatis-config.xml,配置数据源、引入映射文件等

3、创建映射接口MajorMapper,添加增删改查注解

4、编写测试类

  • 获取SqlSession对象
  • 调用SqlSession对象的getMapper方法,获取MajorMapper引用对象
  • 调用MajorMapper的方法实现增删改查专业功能

MyBatis核心API 

  1. 主要接口SqlSession:执行命令,获取映射器实例和管理事务。
  2. SqlSession 是由 SqlSessionFactory 实例创建的。
  3. SqlSessionFactory 对象包含创建 SqlSession 实例的各种方法。
  4. SqlSessionFactory 本身是由 SqlSessionFactoryBuilder 创建的,它可以从 XML、注解或 Java 配置代码来创建 SqlSessionFactory。

1)SqlSessionFactoryBuilder

作用:创建一个 SqlSessionFactory 实例

SqlSessionFactory build(InputStream inputStream)
SqlSessionFactory build(InputStream inputStream, String environment)
SqlSessionFactory build(InputStream inputStream, Properties properties)
SqlSessionFactory build(InputStream inputStream, String env, Properties props)
SqlSessionFactory build(Configuration config)
String resource = "cn/com/sise/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);

2)SqlSessionFactory

作用:创建 SqlSession 实例。

SqlSession openSession()
SqlSession openSession(boolean autoCommit)
SqlSession openSession(Connection connection)
SqlSession openSession(TransactionIsolationLevel level)
......

3)SqlSession

作用:通过这个接口来执行命令,获取映射器实例和管理事务。

1、语句执行方法

<T> T selectOne(String statement, Object parameter)
<E> List<E> selectList(String statement, Object parameter)
int insert(String statement, Object parameter)
int update(String statement, Object parameter)
int delete(String statement, Object parameter)
...

2、事务控制方法

void commit()
void commit(boolean force)
void rollback()
void rollback(boolean force)

3、获取映射器实例

<T> T getMapper(Class<T> type)

MyBatis核心配置文件

MyBatis的XML配置文件包含了影响MyBatis行为甚深的设置和属性信息,称之为主配置文件。

1、<properties>元素

<properties>是一个配置属性的元素,属性可以在外部进行配置,并可以进行动态替换。

1.编写db.properties文件 

driver=com.mysql.jdbc.Driver
...

2.配置<properties... />属性,引入db.properties文件

<properties resource="db.properties" />

3.动态替换配置文件中属性值

<dataSource type="POOLED">
  <property name="driver" value="${driver}"/>
  ...
</dataSource>

2、<settings>元素

<settings>元素主要用于改变MyBatis运行时的行为,例如开启二级缓存、开启延迟加载等。

<!-- 设置 -->
<settings>
    <!--是否开启二级缓存,默认为false -->
    <setting name="cacheEnabled" value="true"/>
    <!--是否开启延迟加载,默认为false -->
    <setting name="lazyLoadingEnabled" value="true"/>
    <!--是否开启自动驼峰命名规则映射,默认为false -->
    <setting name="mapUnderscoreToCamelCase"  
            value="true"/>
    <!--指定 MyBatis 所用日志的具体实现,未指定则自动查找 -->
    <setting name="logImpl"  value="SLF4J | LOG4J | ... | "/>
             ...
</settings>

3、<typeAliases>元素

<typeAliases>元素用于为配置文件中的Java类型设置一个缩写名字,即设置别名。

1. 使用<typeAliases>元素配置别名的方法如下:

<typeAliases>
    <typeAlias type="pojo.User" alias="user"/> 
</typeAliases>

2. 当POJO类过多时,可以通过自动扫描包的形式自定义别名:

<typeAliases>
     <package name="cn.com.sise.pojo"/>
</typeAliases>

3、. 如果在程序中使用了@Alias注解,则别名为其注解的值。

@Alias("author")
public class Author {
    ...
}

4、<environments>元素

<environments>元素用于对环境进行配置。MyBatis的环境配置实际上就是数据源的配置,可以通过该元素配置多种数据源,即配置多种数据库。

<environments default="mysql"><!--配置环境 ,默认的环境id为mysql-->
    <environment id="mysql"><!--1.1.配置id为mysql的数据库环境 -->
        <transactionManager type="JDBC" /><!-- 使用JDBC的事务管理 -->
        <dataSource type="POOLED"><!--数据库连接池 -->
           <property name="driver" value="${driver}" /><!-- 数据库驱动 -->
           <property name="url" value="${url}" /><!-- 连接数据库的url -->
            <property name="username" value="${username}"/><!--用户名-->
           <property name="password" value="${pwd}" /><!-- 密码-->
        </dataSource>
    </environment>
     ...
</environments>

1、事务管理器的配置

在MyBatis中,可以配置两种类型的事务管理器,分别是JDBC和MANAGED。关于这两个事务管理器的描述如下:

JDBC:此配置直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务的作用域。

MANAGED:此配置从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期。

<transactionManager type="JDBC/MANAGED" />

2、数据源类型的配置

可配置三种数据源类型:UNPOOLED、POOLED和JNDI。

  • UNPOOLED:配置此数据源类型后,在每次被请求时会打开和关闭连接。(适用于性能要求不高的系统)
  • POOLED:此数据源利用“池”的概念将JDBC连接对象组织起来,避免了在创建新的连接实例时所需要初始化和认证的时间。
  • JNDI:可在EJB或应用服务器等容器中使用。容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。
<dataSource type="UNPOOLED/POOLED/JNDI">

 5、<mappers>元素

指定MyBatis映射文件的位置,引入映射器文件常用方法:

<mappers>
    <!--1. 使用类路径引入-->
    <mapper resource="cn/com/sise/mapper/MajorMapper.xml"/>
    <!--2. 使用本地文件路径引入-->
    <mapper url="file:///D:/mapper/MajorMapper.xml"/>
    <!--3 使用接口类引入-->
    <mapper class="cn.com.sise.mapper.MajorMapper"/>
    <!--4. 使用包名引入-->
    <package name="cn.com.sise.mapper"/>
</mappers>

6、映射文件

7、 <select>元素

映射查询语句,它可以帮助我们从数据库中读取出数据,并组装数据给业务开发人员。

<!--根据专业编号获取客户信息 -->
<select id="findMajorById" 
            parameterType="string"
            resultType="cn.com.sise.pojo.Major">
              select * from tb_major where id = #{id}
</select>

<select>元素--常用属性

8、<insert>元素、<update>和<delete>元素 

用于映射插入、修改和删除语句,返回影响记录数。

<insert id="addMajor" parameterType="Major">
            insert into tb_major(id,major_name)  
                 values(#{id},#{majorName})
</insert>
<update id="updateMajor" parameterType="Major">
    update tb_major set major_name=#{majorName} where id=#{id}
</update>
<delete id="deleteMajor" parameterType="string">
        delete from tb_major where id=#{id}
</delete>

9、<resultMap>元素

<resultMap>元素表示结果映射集,是MyBatis中最重要也是最强大的元素。

作用:定义映射规则、级联的更新以及定义类型转化器等。

<resultMap type="" id="">
       <constructor> <!-- 类在实例化时,用来注入结果到构造方法中-->
             <idArg/>   <!-- ID参数;标记结果作为ID-->
             <arg/>       <!-- 注入到构造方法的一个普通结果-->
       </constructor>  
       <id/>             <!-- 用于表示哪个列是主键-->
       <result/>       <!-- 注入到字段或JavaBean属性的普通结果-->
       <association property="" />    <!-- 用于一对一关联 -->
       <collection property="" />      <!-- 用于一对多关联 -->
       <discriminator javaType="">   <!-- 使用结果值来决定使用哪个结果映射-->
            <case value="" />               <!-- 基于某些值的结果映射 -->
       </discriminator>	
</resultMap>

小结

  • MyBatis核心对象:SqlSessionFactory,SqlSession;
  • MyBatis核心配置文件 :主要元素(properties、settings、typeAliases、enviroments、mapper);
  • 映射文件:主要元素(select、insert、update、delete、sql resultMap、cache、cache-ref)。  

=======================================================================

案例 lab09

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值