博客
关于我
Mybatis的入门01
阅读量:362 次
发布时间:2019-03-05

本文共 4324 字,大约阅读时间需要 14 分钟。

MyBatis 介绍

MyBatis 是一款支持普通 SQL 查询、存储过程以及高级映射的持久层框架。它是一款半自动 ORM(对象关系映射)持久层框架,具有高 SQL 灵活性、动态 SQL 支持、延迟加载、缓存等特点,但数据库无关性较低。

JDBC 到 MyBatis 的演变历程

  • JDBC:传统的数据库连接方式,操作复杂,难以管理事务。
  • dbutils:简化了 JDBC 的使用,但仍然难以处理复杂的数据库操作。
  • MyBatis:提供了更高级别的抽象,简化了数据库开发,支持动态 SQL 和高级映射。
  • Hibernate:全自动 ORM框架,提供了更强的对象与数据库映射能力。

MyBatis 快速入门

1. 添加必要的 jar 包

mysql
mysql-connector-java
5.1.40
org.mybatis
mybatis
3.5.6
org.project.lombok
lombok
1.18.18

2. 创建数据库及表

  • 数据库名称:ppp
  • 表名称:user
  • 表字段:id(int), username(String), password(String)

3. 添加 MyBatis 配置文件 mybatis-config.xml

4. 定义实体类

@AllArgsConstructor@NoArgsConstructor@Datapublic class User {    private int id;    private String username;    private String password;}

5. 定义 CURD 操作 SQL 映射文件 UserMapper.xml

insert into user(username, password) values (#{param1}, #{param2})
update user set username=#{username}, password=#{password} where id=#{id}
delete from user where id=#{id}

6. 注册 UserMapper.xml

7. 编写测试代码

public static void main(String[] args) throws Exception {    Reader reader = Resources.getResourceAsReader("mybatis-config.xml");    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);    SqlSession session = sessionFactory.openSession();    UserDao mapper = session.getMapper(UserDao.class);    List
users = mapper.selectAll(); session.commit(); System.out.println(users);}

实际开发中的操作

1. 创建 UserDao 接口

public interface UserDao {    List
selectAll(); int insertUser(String username, String password); int updateUser(User user); int deleteUser(int id);}

2. 创建映射文件

insert into user(username, password) values (#{param1}, #{param2})
update user set username=#{username}, password=#{password} where id=#{id}
delete from user where id=#{id}

3. 实际开发中的增删改查

@Testpublic void select() throws Exception {    Reader reader = Resources.getResourceAsReader("mybatis-config.xml");    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);    SqlSession session = sessionFactory.openSession();    UserDao mapper = session.getMapper(UserDao.class);    List
users = mapper.selectAll(); session.commit(); System.out.println(users);}
@Testpublic void insert() throws Exception {    Reader reader = Resources.getResourceAsReader("mybatis-config.xml");    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);    SqlSession session = sessionFactory.openSession();    UserDao mapper = session.getMapper(UserDao.class);    int insert = mapper.insertUser("峥峥", "111");    session.commit();    System.out.println(insert);}
@Testpublic void update() throws Exception {    Reader reader = Resources.getResourceAsReader("mybatis-config.xml");    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);    SqlSession session = sessionFactory.openSession();    UserDao mapper = session.getMapper(UserDao.class);    int update = mapper.updateUser(new User(3, "李四", "333"));    session.commit();    System.out.println(update);}
@Testpublic void delete() throws Exception {    Reader reader = Resources.getResourceAsReader("mybatis-config.xml");    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);    SqlSession session = sessionFactory.openSession();    UserDao mapper = session.getMapper(UserDao.class);    int delete = mapper.deleteUser(2);    session.commit();    System.out.println(delete);}

注意事项

  • Mapper.xml 映射文件中可能出现参数名称不匹配的问题。
  • 可以通过在 UserDao 接口中添加 @Param 注解来解决参数名称不匹配的问题。
  • 也可以通过在 Mapper.xml 中直接使用参数占位符来实现参数值的传递。

转载地址:http://ysmg.baihongyu.com/

你可能感兴趣的文章
【mybatis3】调试/断点打印日志
查看>>
C++
查看>>
[CTFSHOW]PHP特性
查看>>
navigator对象
查看>>
关于EFI系统分区(ESP)你应该知道的3件事
查看>>
5.Mybatis复杂映射开发
查看>>
Servlet2.5的增删改查功能分析与实现------删除功能(四)
查看>>
环境配置 jdk_mysql_myeclipse8.6
查看>>
Session验证码的实现(2018-7-3)
查看>>
spring启动错误:Could not resolve placeholder
查看>>
日志写入xml上传ftp遇到的问题
查看>>
下载任意版本vmware对应的vmware tools
查看>>
将 github 中他人的 仓库 导入 码云中,从而 加快下载速度的 方式
查看>>
Java 类加载的过程 加载、验证、准备、解析、初始化
查看>>
JavaWeb---实现JavaBean来接收参数、请求转发、域对象
查看>>
瀚高数据库中 java代码类型与bit对应(APP)
查看>>
选择性估算器绕过行安全策略漏洞
查看>>
PostgreSQL中的触发器
查看>>
对PostgreSQL数据库结构的宏观理解
查看>>
Postgresql 日期和时间类型
查看>>