MyBatis笔记

本文详细介绍了MyBatis框架的使用,包括根据id删除和查询用户数据的操作,以及MyBatis的设计原则,如接口抽象方法的定义和XML映射配置。通过实例展示了如何简化JDBC代码,实现对数据库的增删改查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. MyBatis
    MyBatis是一种持久层框架。
    传统的JDBC开发中,需要程序员编写大量的代码,例如创建与数据库的连接 > 获取Statement
    /PreparedStatement对象 > 执行SQL语句 > 获取结果 > 处理结果 > 释放资源……这个流程相
    对固定,代码量略多。
    使用MyBatis可以极大程度的简化开发过程,程序员只需要定义需要执行的任务对应的抽象方
    法,并指定该方法对应的SQL语句即可。
  2. 使用MyBatis
    2.1. 案例目标
    通过MyBatis实现对某张用户数据表的增、删、改、查。
    2.2. 创建数据库与数据表
    首先,创建数据库:
    CREATE DATABASE tedu_ums;
    然后,使用该数据库:
    USE tedu_ums
    接下来,创建数据表:
    CREATE TABLE t_user (
    id INT AUTO_INCREMENT COMMENT ‘用户id’,
    username VARCHAR(20) UNIQUE NOT NULL COMMENT ‘用户名’,
    password VARCHAR(20) NOT NULL COMMENT ‘密码’,
    age INT COMMENT ‘年龄’,
    phone VARCHAR(20) COMMENT ‘手机号码’,
    email VARCHAR(50) COMMENT ‘电子邮箱’,
    PRIMARY KEY(id)
    ) DEFAULT CHARSET=UTF8;
    2.3. 创建项目
    创建新的Maven Project,Group Id为cn.tedu.mybatis,Artifact Id为MyBatis,Pack
    aging选择war。
    创建完成后,依然需要:生成web.xml;添加Tomcat运行环境;复制此前项目中的依赖;复制
    Spring的配置文件;复制web.xml中关于DispatcherServlet和CharacterEncodingFilter
    的配置。
    此次需要使用MyBatis框架,所以需要添加新的依赖:

    org.mybatis
    mybatis
    3.5.1

    由于即将把MyBatis和Spring框架整合起来使用,所以需要添加整合2个框架的依赖:

    org.mybatis
    mybatis-spring
    2.0.1

    其工作核心是依赖于JDBC的,还需要添加spring-jdbc依赖,该依赖的版本必须与当前项目使
    用的spring-webmvc的版本完全一致:

    org.springframework
    spring-jdbc
    4.3.9.RELEASE

    本次使用的是MySQL数据库,还需要添加数据库连接的jar包:

    mysql
    mysql-connector-java
    8.0.15

    另外,还需要数据库连接池的依赖:

    commons-dbcp
    commons-dbcp
    1.4

    2.4. 连接数据库
    首先,应该在src/main/resources下创建db.properties数据库连接的配置文件:
    url=jdbc:mysql://localhost:3306/tedu_ums?useUnicode=true&characterEncodin
    g=utf-8&serverTimezone=Asia/Shanghai
    driver=com.mysql.cj.jdbc.Driver
    username=root
    password=root
    initialSize=10
    maxActive=50
    如果不清楚driver属性的值,可以展开jar包中找到配置文件来查看:

然后,在Spring的配置文件中,使用util:properties节点读取以上配置文件:

<util:properties location=“classpath:db.properties” />
读取的配置需要注入到数据库连接池的BasicDataSource对象中,所以,还要在Spring的配
置文件中配置该类对应的节点,并注入属性的值,由于需要读取此前的<util:proper
ties>中的值,所以,还要为该节点添加id:

<util:properties id=“dbConfig”
location=“classpath:db.properties” />









相关文件的配置关系:

然后,创建单元测试类,并测试连接是否可用:
@Test
public void getConnection() throws SQLException {
ClassPathXmlApplicationContext ac
= new ClassPathXmlApplicationContext(“spring.xml”);

DataSource dataSource
    = ac.getBean("dataSource", DataSource.class);

Connection conn =dataSource.getConnection();
System.out.println(conn);

ac.close();

}
2.5. 接口与抽象方法
创建cn.tedu.mybatis.mapper.UserMapper接口文件。
创建cn.tedu.mybatis.entity.User实体类。
首先,完成“增加”操作,则添加抽象方法:
// INSERT INTO t_user (username,password,age,phone,email) VALUES (?,?,?,?,?)
Integer addnew(User user);
MyBatis的接口文件不必在Spring组件扫描的范围之内,即框架本身是不知道有哪些接口文件、
这些文件在哪里的!所以,需要配置这些接口文件所在的位置!则在Spring的配置文件中配置
MapperScannerConfigurer并为必要的属性注入值:

2.6. 配置SQL语句 首先,从doc.tedu.cn下载MyBatis Mapper映射文件 mybatis-mapper.zip文件,解压得到 SomeMapper.xml文件。 在src\main\resources创建名为mappers的文件夹,并将SomeMapper.xml文件复制到这个 文件夹中:

然后,编辑SomeMapper.xml文件,配置抽象方法对应的SQL语句:

<!-- 根据将要执行的SQL语句选择节点 -->
<!-- id:抽象方法的名称 -->
<insert id="addnew">
INSERT INTO t_user (
    username,password,
    age,phone,
    email
) VALUES (
    #{username},#{password},
    #{age},#{phone},
    #{email}
)
</insert>
配置的关系图为:

至此,还需要让框架知道这些XML文件在哪里,并且,找到该文件后还要执行所配置的SQL语句
,就需要让框架知道如何连接数据库,则还需要配置SqlSessionFactoryBean:

最后,可以编写并执行单元测试: @Test public void addnew() { ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
UserMapper userMapper
    = ac.getBean("userMapper", UserMapper.class);

User user = new User();
user.setUsername("FanCQ");
user.setPassword("123456");
Integer rows = userMapper.addnew(user);
System.out.println("rows=" + rows);

ac.close();

}
3. 其它数据访问方式
3.1. 根据id删除数据
在UserMapper.java接口中添加新的抽象方法:
// delete from t_user where id=?
Integer deleteById(Integer id);
然后,在UserMapper.xml中配置映射:

DELETE FROM t_user WHERE id=#{id}

3.2. 查询指定id的用户数据
在UserMapper.java接口中添加新的抽象方法:
// select * from t_user where id=?
User findById(Integer id);
然后,在UserMapper.xml中配置映射:

SELECT
id,username,
password,age,
phone,email
FROM
t_user
WHERE
id=#{id}

3.3. 查询所有用户数据
在UserMapper.java接口中添加新的抽象方法:
// select * from t_user
List findAll();
然后,在UserMapper.xml中配置映射:

SELECT
id,username,
password,age,
phone,email
FROM
t_user

4. MyBatis的设计原则
4.1. 如何设计抽象方法
在MyBatis中,接口中的抽象方法的设计原则有:
返回值:如果将要执行的是增、删、改操作,返回值应该是Integer,表示受影响的行数,如
果将要执行的是查询操作,返回值可以是符合查询结果需求的数据类型;
方法名称:抽象方法的名称可以自定义,但是,不允许使用重载机制,具体的命名方式推荐遵
守JPA的规范;
参数列表:抽象方法的参数可根据将要执行SQL语句中的变量来决定,如果执行的是INSERT操
作,参数应该是自定义的数据类型,可以封装所有字段的值。
注意:默认情况下,抽象方法只允许有最多1个参数!
4.2. 如何配置XML中的映射
所有的增删改查节点都必须指定id属性。
如果配置是的节点,除了必须指定id属性以外,还必须配置resultType或resultMap
中的1个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值