Mybatis框架基础

1.关于Mybatis框架

  • Mybatis的主要作用是快速实现对关系型数据库中的数据进行访问的框架
    • 在原生的Java技术中,需要使用JDBC实现对数据库中的数据访问,执行过程繁琐且 相对固定,使用框架可以

2. 创建Mybatis-Spring工程

  • Mybatis可以不依赖于Spring等框架直接使用的,但是,就需要进行大量 的配置,前期配置工作量较大,基于Spring框架目前是业内使用的标准之 一,所以,通常会整合Spring与Mybatis,以减少配置
  • 在创建工程时,创建普通的Maven工程即可(不需要选择特定的骨架)
  • 在pom.xml中添加几个依赖项
<dependencies>
    <!--配置mybatis-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.0</version>
    </dependency>
    <!--mybatis整合spring依赖-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.1</version>
    </dependency>
    <!--spring-context依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.16</version>
    </dependency>
    <!--spring -jdbc的依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.2.2.RELEASE</version>
    </dependency>
    <!--mysql/mariadb连接的依赖项-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.15</version>
    </dependency>
    <!--数据库连接池依赖,当前使用的是commons-dbcp2-->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.9.0</version>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.8.2</version>
        <scope>test</scope>  <--限制使用的位置-->
    </dependency>
</dependencies>

3. 配置Mybatis的开发环境

  • 登录MySQL控制台,创建名为mall_ams的数据库:
    • CREATE DATABASE mall_ams;
  • 通过数据库视图的Console面板创建数据表:
create table ams_admin (
id bigint unsigned auto_increment,
username varchar(50) default null unique comment '用户名',  password char(64) default null comment ' 密 码 ( 密 文 )',  nickname varchar(50) default null comment '昵称',
avatar varchar(255) default null comment ' 头 像 URL',  phone varchar(50) default null unique comment '手机号码',  email varchar(50) default null unique comment '电子邮箱',  description varchar(255) default null comment '描述',
is_enable tinyint unsigned default 0 comment '是否启用,1=启用,0=未启用',  last_login_ip varchar(50) default null comment '最后登录IP地址(冗余)',  login_count int unsigned default 0 comment ' 累 计 登 录 次 数 ( 冗 余 )',  gmt_last_login datetime default null comment ' 最 后 登 录 时 间 ( 冗 余 )',  gmt_create datetime default null comment '数据创建时间',
gmt_modified datetime default null comment '数据最后修改时间',  primary key (id)
) comment '管理员' charset utf8mb4;
  • 在src/main/resources下创建datasource.properties配置文件,用于配 置连接数据库的参数,例如:
datasource.url=jdbc:mysql://localhost:3306/mall_ams?useUnicode=true&ch  aracterEncoding=UTF-8&serverTimezone=Asia/Shanghai
datasource.driver=com.mysql.cj.jdbc.Driver  datasource.username=root  datasource.password=root
* 提示:以上配置中的属性名称应该添加前缀,避免与系统环境变量冲突, 例如在Windows操作系统中,username则表示登录系统的用户名
  • 在cn.tedu.mybatis包下(不存在,则创建)创建SpringConfig类,读取 以上配置文件:
@Configuration
  @PropertySource("classpath:datasource.properties") 
 public class SpringConfig {
}
* 提示:@PropertySource是Spring框架的注解,用于读取properties类 型的配置文件,读取到的值将存入到Spring容器的Environment对象中

4. Mybatis的基本使用

  • 当使用Mybatis实现数据访问时,主要:
    1. 编写数据访问的抽象方法
    • 配置抽象方法对应的SQL语句
  • 关于抽象方法:
    • 必须定义在某个接口中,这样的接口通常使用Mapper作为名称的后缀,例如AdminMapper
      • Mybatis框架底层将通过接口代理模式来实现
    • 方法的返回值类型:
      • 如果要执行的数据操作是增、删、改类型的,统一使用int作为返回值类型,表示“受影 响的行数”,也可以使用void,但是不推荐
      • 如果要执行的是查询操作,返回值类型只需要能够装载所需的数据即可
    • 方法的名称:自定义,不要重载,建议风格如下:
      • 插入数据使用insert作为方法名称中的前缀或关键字
      • 删除数据使用delete作为方法名称中的前缀或关键字
      • 更新数据使用update作为方法名称中的前缀或关键字
      • 查询数据时:
        • 如果是统计,使用count作为方法名称中的前缀或关键字
        • 如果是单个数据,使用getfind作为方法名称中的前缀或关键字
        • 如果是列表,使用list作为方法名称中的前缀或关键字
        • 如果操作数据时有条件,可在以上前缀或关键字右侧添加by字段名,例如deleteById
    • 方法的参数列表:取决于需要执行的SQL语句中有哪些参数,如果有多个参数,可将 这些参数封装到同一个类型中,使用封装的类型作为方法的参数类型
    • 所有用于Mybatis处理数据的接口都必须被Mybatis识别,有2种做法:
      • 在每个接口上添加@Mapper注解
      • 【推荐】在配置类上添加@MapperScan注解,指定接口所在的根包
  • 接下来,需要配置抽象方法对应的SQL语句,这些SQL语句推荐配置在  XML文件中
    • 可以从 http://doc.canglaoshi.org /config /Mapper.xml.zip 下载到XML  文件。在项目的src/main/resources下创建mapper文件夹,并将下载得 到的XML文件复制到此文件夹中,重命名为AdminMapper.xml。
    • 打开XML文件夹,进行配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 根节点必须是mapper -->
<!-- 根节点的namespace属性用于配置此XML对应哪个接口	-->
<mapper namespace="cn.tedu.mybatis.mapper.AdminMapper">
<!-- 根据需要执行的SQL语句的种类选择需要配置的节点名称	-->
<!-- 配置SQL的节点的id属性取值为抽象方法名称	-->
<!-- 在节点内部配置SQL语句	-->
<!-- SQL语句中的参数值使用	#{} 格式的占位符表示	-->
<insert id="insert">
insert into ams_admin (username, password, nickname, avatar,  phone, email, description, is_enable,last_login_ip, login_count, gmt_last_login, gmt_create,  gmt_modified) values (#{username}, #{password}, #{nickname}, #{avatar},  #{phone}, #{email}, #{description}, #{isEnable},
#{lastLoginIp}, #{loginCount}, #{gmtLastLogin}, #{gmtCreate},  #{gmtModified})
</insert>
</mapper>

* 最后,还需要将DataSource配置给Mybatis框架,并且,为Mybatis配置 这些XML文件的路径,这2项配置都将通过配置SqlSessionFactoryBean  来完成
    * 先在datasource.properties中补充一条配置:
mybatis.mapper-locations=classpath:mapper/AdminMapper.xml
* 然后在配置类中创建SqlSessionFactoryBean类型的对象:
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource,  @Value("${mybatis.mapper-locations}") Resource mapperLocations) {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();  
sqlSessionFactoryBean.setDataSource(dataSource); 
sqlSessionFactoryBean.setMapperLocations(mapperLocations);
return sqlSessionFactoryBean;
}
  • 获取新增的数据的自动编号的id
    • 如果某数据的id是自动编号,当需要获取新增的数据的id时,需要先使得 插入的数据类型中有id对应的属性,则在Admin类中添加id属性:
    • 接下来,在节点配置2个属性,分别是useGeneratedKeys和 keyProperty:
<insert id="insert" useGeneratedKeys="true"
原有代码
</insert>
* 当配置完成后,Mybatis执行此插入数据的操作后,会将自动编号的id赋 值到参数Admin admin的id属性中,以上keyProperty指的就是将自动编 号的值放回到参数对象的哪个属性中!
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值