前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatis(如何使用MyBatis)

MyBatis(如何使用MyBatis)

作者头像
全栈开发日记
发布2022-05-13 14:14:35
4150
发布2022-05-13 14:14:35
举报
文章被收录于专栏:全栈开发日记全栈开发日记

MyBatis是什么?点击查看

MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

在搭建好MyBatis的运行环境后,需要配置两个基础文件,一个是【全局配置文件】,另一个是【映射文件】。

全局配置文件的工作比较类似于JDBC中的工具类,用于连接数据库一系列操作。

映射文件的工作是用来编写动态SQL,用于接收参数,然后形成一个SQL语句发送到数据库执行的一系列操作。

全局配置文件

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <!--
    用于配置mybatis的配置文件
    resource:用于加载本地properties文件
    property先执行properties后执行
  -->
  <properties resource="jdbc.properties"></properties>

  <!--
  配置环境信息:
  事务:
  数据库连接池:
  default:指定默认使用的环境,值为environment的id
   -->
   <environments default="development">
     <environment id="development">
     <!-- 指定使用jdbc事务 -->
     <transactionManager type="JDBC"/>
     <!-- 指定数据源
       type:是否使用数据库连接池
       pooled是mybatis内置的数据库连接池
       mybatis内置的连接池不好用,但是spring可以代替管理数据源可以使用 druid等第三方的数据库
      -->
     <dataSource type="POOLED">
       <property name="driver" value="${jdbc.driver}"/>
       <property name="url" value="${jdbc.url}"/>
       <property name="username" value="${jdbc.username}"/>
       <property name="password" value="${jdbc.pwd}"/>
     </dataSource>
     </environment>
   </environments>
   
   <mappers>
     <!-- 加载类路径下的映射文件 resource是基于类路径下的-->
     <mapper resource="UserMapper.xml"/>
   </mappers>
</configuration>

一般会在全局配置文件中通过properties文件方式加载连接数据库。至于properties文件中如何配置,大家可以通过百度,或者留意后续更新。

以上全局配置中的value值如``${jdbc.driver}``都是在加载properties文件中的键值对。

映射文件

代码语言:javascript
复制
<?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">
 <!--
   主节点:
   namespace:命名空间,类似package,目的是为了包装sql id的唯一性
   Java package为了保证类名的唯一性
  -->
<mapper namespace="UserMapper">
<!--
  用于执行select查询语句的
  id:必须
  resultType:定义查询结果的映射类型
    如果返回单行记录,类型就是返回值的类型
    如果返回多行记录,类型就是集合的泛型
  #{}为占位符 可以接收简单类型,hashMap、实体类,如果输入参数为简单类型 #{任意值},如果输入参数为hashMap,#{key},如果输入参数为pojo类型#{属性名}
  ${}为拼接字符串 可以接受简单类型、hashMap、实体类
 -->
   <select id="selectCount" resultType="int">
     select count(*) from t_user
   </select>
   <select id="selectAll" resultType="int" parameterType="java.lang.String">
     select id from t_user where pwd=${value}
   </select>
</mapper>

具体详解已经写在代码的详解中,配合代码查看更加直观。

需要注意的是,parameterType指的是输入参数,值是该数据类型的Java包装类全限定类名或是别名。别名可以在全局配置文件中声明,一些常见的Java数据类型MyBatis都有提供有别名,可自行百度学习。

使用

然后就是在测试类中使用配置好的MyBatis项目了

代码语言:javascript
复制
public class test {

  public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    //创建构建者对象
    SqlSessionFactoryBuilder factory=new SqlSessionFactoryBuilder();
    //加载xml配置文件
    InputStream is=Resources.getResourceAsStream("mybatis-config.xml");
    //构建工厂对象
    SqlSessionFactory ssf=factory.build(is);
    //使用工厂对象获取SQL session对象
    SqlSession ss=ssf.openSession();
    //selectOne方法只能返回一条数据
    //参数为映射文件名(无后缀)和select标签的id
    Integer sum=ss.selectOne("UserMapper.selectCount");
    System.out.println(sum);
    //selectList方法可以返回0或多条数据
    //第一个参数同上,第二个参数为传的参数
    List<Object> all=ss.selectList("UserMapper.selectAll","123");
    System.out.println(all);
    //将该SqlSession对象关闭,后续无法继续使用
    ss.close();
  }
}

xml中包括声明(声明版本信息及编码格式)、约束(mybatis使用的是dtd约束)、节点及属性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档