WEB基础--Mybatis

了解Mybatis

什么是Mybatis

市面上最流行的技术架构:SSM 他们代表了 Spring业务层框架,SpringMvc WEB层框架以及MyBatis数据库持久层框架。

MyBatis 作为一个数据库持久层框架,是基于ORM规范(对象关系映射) 。类似我们以前的JDBC 和 JPA。

为什么要学习Mybatis

这取决于市场的变化带动了技术的变更,当项目规模变大,用户体量增加,数据量增加,但是我们往往对数据的读写效率要求更高。JDBC的性能比较高但是用起来比较麻烦。JPA(不用写sql)开发速度快,但是由于自动生成SQL没法保证读写性能。 MyBatits作为一个半ORM框架它允许查询自己写SQL(只是把sql写到映射文件中XxxMapper.xml)。这样一来程序的性能就可以得到保证。同时MyBatis用起来也相对比较简单(比JPA要复杂一点,比JDBC简单)。


Mybatis与JDBC与JPA

Mybatis配置文件

Mybatis相关依赖

	<!-- mybatis核心包 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.2.1</version>
    </dependency>
    <!-- mysql驱动包 -->
    <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>5.1.26</version>
     </dependency>
     <!-- junit测试包 -->
     <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.12</version>
         <scope>test</scope>
     </dependency>
    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

Mybatis相关配置文件

<?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">
<!--根元素,里面就是Mybatis配置-->
<configuration>
<!--    环境配置:数据库的配置环境(怎么连接数据库) ,
        可以配置多个环境对象 environment,多个数据库的连接配置,
        可以通过  default="development" 来切换默认的环境
-->
    <environments default="development">
        <environment id="development">
<!--            事务管理器,type="JDBC"使用JDBC的事务管理 "JdbcTransaction"  -->
            <transactionManager type="JDBC"/>
<!--            数据源配置 POOLED 连接池,对应 PooledDataSource-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>

<!--        <environment id="test">-->
<!--  		...	-->
<!--        </environment>-->
        
    </environments>
    <mappers>
        <mapper resource="hello/ProductMapper.xml"/>
    </mappers>
</configuration>

Mybatis常见用法

jdbc.properties

创建jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis-hello
jdbc.username=root
jdbc.password=admin

使用jdbc.properties

<configuration>
<!--    加载properties-->
    <properties resource="jdbc.properties" />
    
<!--    链接数据库的配置环境-->
    <environments default="development">
<!--        开发环境-->
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

自动返回主键

mybatis的insert可以开启主键的自动返回,保存对象后,MyBatis会把对象的ID注入到对象中。

<insert id="insert" parameterType="com.mybatis.domain.Product"
            useGeneratedKeys="true" keyColumn="id" keyProperty="id">
    //...
</insert>    

给对象设置别名

在sql映射文件中我们在指定参数类型的时候使用的是实例类的全限定名,这没有什么问题,在MyBatis中可以为实体类取别名,在使用的时候可以通过别名来代表实体类。

在映射文件中(XxxMapper.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>

<!--    加载properties-->
    <properties resource="jdbc.properties" />
    
    <typeAliases>
        <typeAlias type="com.mybatis.domain.Product" alias="Product" />
<!--        <package name="com.mybatis.domain"/>-->
    </typeAliases>

使用自定义别名

<select id="getById" parameterType="long" resultType="Product">
    ...
</select>

写在最后

mybatis是一款常用的半ORM框架,在实际开发过程中也有着重要作用。本篇博文对mybatis做了简单的介绍以及一些简单的入门,相关的面试题笔者也在昨天进行了发布,感兴趣的朋友可以去看看。笔者小,中,大厂均有面试经历,每日分享JAVA全栈知识,希望能够与大家共同进步。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值