一、MyBatis概述

MyBatis是一个ORM(对象,关系,映射)的数据库持久化框架,MyBatis底层还是原生的JDBC代码,对JDBC代码的封装

二、MyBatis相较于JDBC有哪些优势

  1. 把sql语句从java代码中抽取出来,方便维护,并且修改sql时不用修改java代码
  2. 不用手动设置参数和对结果集的处理,让我们操作数据库更加简单
  3. 与JDBC相比,大大减少了代码量,提高了开发效率

三、MyBatis全局配置文件

3.1 属性配置文件(db.properties)

在工程中对数据源信息写在db.properties文件中,可以通过properties标签来加载该文件

driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis
username = root
password = 1234

3.2 Mybatis核心配置文件(Mybatis-Config.xml)

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 通过properties标签,读取数据库配置文件的内容 --><properties resource="DB.properties"/><!-- 配置mybatis的环境信息 --><environments default="development"><environment id="development"><!-- 配置JDBC事务控制,由mybatis进行管理 --><transactionManager type="JDBC" /><!-- 配置数据源,采用dbcp连接池 --><dataSource type="POOLED"><property name="driver" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /></dataSource></environment></environments>
</configuration>

四、MyBatis入门

4.1导入MyBatis相应的jar包

网上有很多资源找到相应的即可

4.2.1建立对应的实体表

4.2.2创建对应的实体类

public class Product {private Long id;//产品名private String productName;//产品类型idprivate Long dir_id;//零售价private Double salePrice;//供应商private String supplier;//品牌private String brand;//折扣private Double cutoff;//成本价private Double costPrice;
}

4.3创建Mapper接口和Mapper映射文件

接口ProductMapper,接口不要写实现类

public interface ProductMapper {/**增*/void save(Product product);/**删*/void delete(Long id);/**改*/void update(Product product);/**查询一条信息*/Product selectOne(Long id);/**查询所有信息*/List<Product> selectAll();
}

映射文件名和接口一样ProductMapper

<!-- 命名空间:namespace直接写UserMapper接口的的完全限定名 -->
<mapper namespace="cn.itsource.domain.ProductMapper"><!-- 查询一条 --><select id="selectOne" parameterType="long" resultType="cn.itsource.domain.Product">select * from product where id = #{id}</select><!-- 查询所有 --><select id="selectAll" resultType="cn.itsource.domain.Product">select * from product </select><!-- 添加一条 --><insert id="save" parameterType="cn.itsource.domain.Product">insert into product (productName,dir_id,salePrice,supplier,brand,cutoff,costPrice) values (#{productName},#{dir_id},#{salePrice},#{supplier},#{brand},#{cutoff},#{costPrice})</insert><!-- 修改信息 --><update id="update" parameterType="cn.itsource.domain.Product">update product set productName = #{productName},dir_id = #{dir_id},salePrice = #{salePrice},supplier = #{supplier},brand = #{brand},cutoff = #{cutoff},costPrice = #{costPrice}where id = #{id}</update><!-- 删除 --><delete id="delete" parameterType="long">delete from product where id = #{id}</delete>
</mapper>

4.4工具类

public enum MyBatisUtil {INSTRUMENT;private static SqlSessionFactory factory = null;static{try {//读取配置文件,mybatis提供了工具类Reader reader = Resources.getResourceAsReader("Mybatis-Config.xml");//获取SqlSessionFactory对象,SqlSessionFactory()(工厂模式)是接口,通过SqlSessionFactoryBuilder()(创建者模式)创factory = new SqlSessionFactoryBuilder().build(reader);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public SqlSession openSession() {return factory.openSession();}
}

4.5测试

这里展示了添加数据和修改数据

public class ProductMapperTest {@Testpublic void testSave() {SqlSession session = null;try {session = MyBatisUtil.INSTRUMENT.openSession();ProductMapper mapper = session.getMapper(ProductMapper.class);Product product = mapper.selectOne(33L);product.setProductName("毅毅");mapper.save(product);//提交事务session.commit();} catch (Exception e) {// 事务回滚session.rollback();e.printStackTrace();}finally {session.close();}}@Testpublic void testUpdate() {SqlSession session = null;try {session = MyBatisUtil.INSTRUMENT.openSession();ProductMapper mapper = session.getMapper(ProductMapper.class);Product product = mapper.selectOne(33L);product.setProductName("凡凡");mapper.update(product);//提交事务session.commit();} catch (Exception e) {// 事务回滚session.rollback();e.printStackTrace();}finally {session.close();}}
}

MyBatis全面详解相关推荐

  1. mybatis注解详解

    mybatis注解详解 首 先当然得下载mybatis-3.0.5.jar和mybatis-spring-1.0.1.jar两个JAR包,并放在WEB-INF的lib目录下 (如果你使用maven,则 ...

  2. mybatis 配置详解

    mybatis 配置详解 mybatis-config.xml 核心配置文件 mybatis-config.xml 包含的内容如下 configuration(配置) properties(属性) s ...

  3. Mybatis映射详解

    Mybatis映射详解 在最近的工作中,碰到一个比较复杂的返回结果,发现简单映射已经解决不了这个问题了,只好去求助百度,学习mybatis复杂映射应该怎么写,将学习笔记结合工作碰到的问题写下本文,供自 ...

  4. Java SE MyBatis框架(详解)

    Java SE MyBatis框架 目录 Java SE MyBatis框架 通用框架 1.lib 2.src 2.1.mybatis.xml 2.2.DateBase.properties 2.3. ...

  5. MyBatis Generator 详解

    MyBatis Generator中文文档 MyBatis Generator中文文档地址: http://mbg.cndocs.tk/ 该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看 ...

  6. MyBatis配置详解

    为什么80%的码农都做不了架构师?>>>    序言 在Eclipse中,将鼠标放在根节点上后,可以看到配置文件中的主要配置项,如下图所示: 这些项分别是:properties.se ...

  7. MyBatis 缓存详解-开启二级缓存的方法

    第一步:在mybatis-config.xml 中配置了(可以不配置,默认是true): <setting name="cacheEnabled" value="t ...

  8. Spring Hibernate Mybatis配置详解

    2019独角兽企业重金招聘Python工程师标准>>> 1. Spring + Hibernate4(spring-hibernate.xml) <!-- 引入jdbc pro ...

  9. MyBatis 缓存详解-第三方缓存做二级缓存

    除了MyBatis 自带的二级缓存之外,我们也可以通过实现Cache 接口来自定义二级缓存. MyBatis 官方提供了一些第三方缓存集成方式,比如ehcache 和redis: https://gi ...

  10. MyBatis 缓存详解-二级缓存介绍

    二级缓存是用来解决一级缓存不能跨会话共享的问题的,范围是namespace 级别的,可以被多个SqlSession 共享(只要是同一个接口里面的相同方法,都可以共享),生命周期和应用同步. 思考一个问 ...

最新文章

  1. asp.net mvc @RenderBody()的问题
  2. java封装继承多态语法,GO语言中封装,继承,和多态
  3. 三种SQL分页查询的存储过程
  4. 成功的九字真言(冯唐)
  5. BZOJ 1016--[JSOI2008]最小生成树计数(kruskal搜索)
  6. [译]不要在UI主线程中进行耗时的操作
  7. JEECG开源团队招募成员计划
  8. ASP.NET操作简单的xml,增删改查
  9. 【AI视野·今日Sound 声学论文速览 第一期】Thu, 14 Apr 2022
  10. 设计模式综和实战项目x-gen系列二
  11. Recovery真的不是难事!
  12. powerpoint 2016表格中添加行
  13. 愚人节的礼物Java
  14. 联想y7000笔记本触摸板开启快捷键_关闭笔记本触摸板四种方法【图文教程】
  15. 数字图像来源:光学成像系统
  16. thinkpad解决Win8.1电源管理的方法
  17. 开关电源(DC-DC)与LDO电源的区别---效率
  18. Python Conda报错:Collecting package metadata (current_repodata.json): failed
  19. 北京地铁行业远期规划与建设融资规划报告2022版
  20. OTT发展背后的融合通讯

热门文章

  1. xmlhttp.readyState的值及解释-xmlhttp.status的值及解释
  2. Linux操作文档——Oracle数据库备份与恢复
  3. 【git认证错误】fatal: Authentication failed for ‘http://gitlab.gwm.cn/les-zt/middleware/erp_upload.git/‘
  4. 拜占庭杯 | 区块链数字经济商业分析大赛
  5. 002.AnyCast技术浅析
  6. Nanoprobes丨EnzMet 用于免疫组织化学 (IHC) 和印迹
  7. chatgpt系列文章-23.2.15(主要还在发现chatgpt的不足,偏探索,像报告)
  8. linux——Mplayer
  9. html5语义化标签总结二
  10. 怎么样快速学习AngularJS? - 左正 - 博客园