MyBatis之基本使用

前言

本章我们将开始学习一个非常优秀的ORM(对象关系映射)框架:MyBatis,它是目前企业中使用最多的数据库框架。

MyBatis简介

     MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

MyBatis的优点有:

1)代替JDBC完成CRUD,效率高

2)上手容易,配置灵活

3)是目前公司主流的ORM(对象关系映射)框架

MyBatis的基本配置

这里我们使用Maven构建项目,

首先需要导入MyBatis和MySQL驱动的依赖

然后再添加配置文件,MyBatis的配置文件分为两种:

1、MyBatis框架的总体配置文件

2、MyBatis数据库映射文件

MyBatis配置文件

我们可以在项目的resources目录中添加配置文件:mybatis-config.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  4. <configuration>
  5. <!--environments 代表配置环境集合,此标签中可以有多个environment,
  6. default属性是选择其中一个环境作为默认的配置环境-->
  7. <environments default="develop">
  8. <environment id="develop">
  9. <!--这里配置事务管理器为JDBC类型-->
  10. <transactionManager type="JDBC"/>
  11. <!--这里配置数据源,POOLED代表连接池类型的数据源-->
  12. <dataSource type="POOLED">
  13. <!--这里是常用的4个数据库配置:驱动、URL、账号、密码-->
  14. <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
  15. <property name="url" value="jdbc:mysql://localhost/java1903?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"/>
  16. <property name="username" value="root"/>
  17. <property name="password" value="123456"/>
  18. </dataSource>
  19. </environment>
  20. </environments>
  21. <!--这里是配置数据库映射文件的路径,如果有映射文件就配置到这里-->
  22. <mappers>
  23. <mapper resource="mappers/userMapper.xml"/>
  24. </mappers>
  25. </configuration>

映射文件

MyBatis能实现通过Java对象来操作数据库,那么如何通过Java对象的操作来查询和修改数据库的表呢?MyBatis通过映射文件来配置数据的SQL操作,将Java对象的方法映射为具体的SQL语句。

这里我们先编写一个UserDAO接口

  1. package com.qianfeng.mybatis.dao;
  2. public interface UserDAO
  3. {
  4. List<User> selectAll();
  5. void insert(User user);
  6. }

接下来我们来配置映射文件实现User表的查询和插入操作:

在resources下创建mappers目录,然后创建映射文件:userMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <!-- namespace配置对应的Java接口 -->
  6. <mapper namespace="com.qianfeng.mybatis.dao.UserDAO">
  7. ...
  8. </mapper>

mapper中可以配置四种标签:

1)<insert> 配置insert语句

2)<update> 配置update语句

3)<delete> 配置delete语句

4)<select> 配置select语句

这四种标签的常用属性有:

  1. id  对应DAO接口中的方法名

2)parameterType   对应方法的参数类型

3)returnType   

 对应方法的返回值类型,如:User(表的字段名和类的属性名一样)

  1. returnMap       

对应方法的返回值类型映射,用于表的字段名和类的属性名不一样的情况,实现字段名和属性的映射关系

这里是insert配置示例

  1. <insert id="insert" parameterType="com.qianfeng.mybatis.entity.User">
  2. insert into tb_user(u_name,u_password,u_realname,u_gender,u_age,u_img)
  3. values(#{name},#{password},#{realname},#{gender},#{age},#{img})
  4. </insert>

其中#{...}中包含的是User对象的属性名称

select配置示例

  1. <resultMap id="userMap" type="com.qianfeng.mybatis.entity.User">
  2. <id property="id" column="u_id"></id>
  3. <result property="name" column="u_name"></result>
  4. <result property="password" column="u_password"></result>
  5. <result property="realname" column="u_realname"></result>
  6. <result property="gender" column="u_gender"></result>
  7. <result property="age" column="u_age"></result>
  8. <result property="img" column="u_img"></result>
  9. </resultMap>
  10. <select id="selectAll" resultMap="userMap">
  11. select * from tb_user
  12. </select>

returnMap配置的查询语句返回的对象与数据库表的映射,id是映射名,type是对应的Java类型

其中子标签id是配置表的主键,属性id是Java类的属性名,column是表的字段名,还有javaType和jdbcType属性可以配置Java的类型和Jdbc数据类型,这两个这里可以省略。

result是配置除主键外的一般列

MyBatis的使用方法

主要步骤:

  1. 1)读取配置文件,创建SqlSessionFactory
  2. SqlSessionFactory factory =
  3. new SqlSessionFactoryBuilder().build(
  4. Resources.getResourceAsStream("mybatis-config.xml"));
  5. 2)打开数据库会话Session
  6. SqlSession sqlSession = factory.openSession();
  7. 3)获得DAO接口的代理对象
  8. UserDAO mapper = sqlSession.getMapper(UserDAO.class);
  9. 4)执行CRUD
  10. mapper.insert(...);
  11. 5) 提交事务
  12. sqlSession.commit();
  13. 6) 关闭会话
  14. sqlSession.close();

总结

本章我们学习了MyBatis的基本配置,以及映射文件的写法,也掌握了MyBatis的基本操作方法,MyBatis还有很多强大的特性,我们会在后面学习到。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值