MyBatis快速入门

2023-12-14 11:49:49

? ? ? ? MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。

JDBC:(java DataBase Connectivity), 就是使用Java语言操作关系型数据库的一套API

? ? ? ? 本质:

? ? ? ? ? ? ? ? sun公司官方定义的一套操作所有关系型数据库的规范,即接口。

? ? ? ? ? ? ? ? 各个数据库厂商去实现这套接口,提供数据库驱动jar包

? ? ? ? ? ? ? ? 我们可以使用这套接口(JDBC)编程,真正执行的代码时驱动jar包中的实现类。

使用Mybatis查询所有用户数据

? ? ? ? 1.准备工作(创建springboot工程,数据库表user, 实体类User)

? ? ? ? 2.引入MYbatis的相关依赖,配置Mybatis? ? ? ?

? ? ? ?MyBatis依赖

        <!-- mybatis的起步依赖 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>
        <!--mysql驱动包-->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

<!--老版本的驱动包-->
<!--        <dependency>-->
<!--            <groupId>com.mysql</groupId>-->
<!--            <artifactId>mysql-connector-j</artifactId>-->
<!--            <scope>runtime</scope>-->
<!--        </dependency>-->

<!--springboot单元测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

????????配置

#配置数据库的连接信息 - 四要素
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/itcast
#连接数据库的名用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=123456

? ? ? ? 3.编写SQL语句(注解/XML)

? ? ? ? UserMapper

@Mapper // 在运行时,会制动的生成该接口的实现类对象(代理对象),并且将该对象交给IOC容器管理
public interface UserMapper {

    //查询全部用户信息
    @Select("select * from user")
    public List<User> list();
}

数据库连接池

? ? ? ? --数据库连接池是个容器,负责分配,管理数据库连接(Connection)

? ? ? ? --它允许应用程序重复使用一个现有的数据库连接,而不时重复建立一个

? ? ? ? --释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏?

? ? ? ? 资源重用

? ? ? ? 提升系统响应速度

? ? ? ? 避免数据库连接遗漏

? ? ? ? 切换Druid数据库连接池

? ? ? ? ? ? ? ? Hikari(springboot默认)??

? ? ? ? ? ? ? ? Druid (alibaba)

? ? ? ? ? ? ? ? 官网:druid/druid-spring-boot-starter at master · alibaba/druid (github.com)

? ? ? ? ? ? ? ? 1.导入maven依赖

       <dependency>
            <groupId>com.alibab</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <scope>1.2.8</scope>
        </dependency>

? ? ? ? ? ? ? ? 2.?配置数据库连接

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/itcast
spring.datasource.username=root
spring.datasource.password=123456

lombok

? ? ? ? lombok是一个实用的Java类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并可以生成日志变量,简化java开发,提高效率。

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

@Getter/@Setter

@ToString? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? =========>? ? ? ? ? ? ? ? @Date

@EqualsAndHashCode

@NoArgsConstructor

@AllArgsConstructor

Mybatis-基础操作

#指定mybatis输出日志的位置,输出控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

? ? ? ? 接口方法:

? ? ? ? ????????删除

    //根据ID删除数据
     @Delete("delete from emp where id = #{id}")
    public void delete(Integer id);

? ? ? ? ?SQL注入:

? ? ? ? ? ? ? ? SQL注入是通过操作输入的数据来修改事先定义好的SQL语句,以达到执行代码对服务器进行攻击的方法。

? ? ? ? #{...}:执行SQL时,会将#{...}替换为?,生成预编译SQL,会自动设置参数值。

? ? ? ? 使用时机: 参数传递,都使用#{...}

? ? ? ? ${...}:拼接SQL。直接将参数拼接在SQL语句中,存在SQL注入问题

? ? ? ? 使用时机:如果对表名,列表进行动态设置时使用

????????

文章来源:https://blog.csdn.net/Pzg3240432140/article/details/134901427
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。