mybatis注解

MyBatis笔记

半腔热情 提交于 2020-03-03 16:28:18
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github; MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射; MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录; 好处: 1. 简单易学 :本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 2. 灵活 :mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。 3. 解除sql与程序代码的耦合 :通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。 4. 提供映射标签,支持对象与数据库的orm字段关系映射 5. 提供对象关系映射标签,支持对象关系组建维护 6. 提供xml标签,支持编写动态sql.

springBoot 整合 mybatis+Oracle

丶灬走出姿态 提交于 2020-03-02 18:46:05
  现在比较流行的操作数据库操作层框架Mybatis,下面我们就来看看Springboot如何整合mybatis, 之前一直在用xml形式写sql,这次依然用xml的方式感觉这种还是比较灵活方便。   添加mybatis关键就是要引入mybatis-spring-boot-starter到pom文件中,如果你用MySQL,那就引入MySQL的pom文件,这里我用Oracle,淡然要引入Oracle的依赖了。添加完成mybatis和Oracle 在pom.xml 文件中的引入。 <!-- 链接Oracle数据库 oracle ojdbc不免费,需要手动引入jar包 --> <dependency> <groupId>oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- 集成mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId>

Mybatis(二)----框架入门

删除回忆录丶 提交于 2020-03-02 17:27:47
二、Mybatis框架入门 1、Mybatis的环境搭建 1、创建maven工程并导入坐标 2、创建实体类和dao的接口 3、创建Mybatis的主配置文件SqlMapConfig.xml 4、创建映射配置文件IUserDao.xml 注意事项 1、我们在工程中创建的 IUserDao.xml 和 IUserDao.java 接口,而Mybatis中把持久层的操作接口和映射文件叫做 Mapper ,所以 IUserDao=IUserMapper 2、目录的创建和包的创建方式是不一样的,在包结构,com.simon.dao是三级目录,在目录结构中com.simon.dao是一层结构。 3、mybatis的映射配置文件必须和dao接口的包结构相同。 4、映射配置文件的mapper标签的namespace属性的取值必须是dao接口的全限定类名。 5、映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名。 2、Mybatis的入门案列 读取配置文件 创建SqlSessionFactory工厂 创建SqlSession 创建Dao接口的代理对象 执行dao中的方法 释放资源 //导入配置文件 InputStream in = Resources . getResourceAsStream ( "SqlMapConfig.xml" ) ; /

Spring+MyBatis整合

一笑奈何 提交于 2020-03-01 09:59:05
一、准备工作   1.1准备jar包            建表语句: CREATE TABLE `t_customer` ( `id` int(32) NOT NULL AUTO_INCREMENT, `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `jobs` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `phone` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;   1.2编写配置文件:     1.2.1db.properties    #dataSource #Thu Mar 07 16:27:40 CST 2019 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/sm jdbc.username=root jdbc

SSM01_Mybatis基础入门

随声附和 提交于 2020-02-29 19:37:51
Mybatis学习 框架概述 什么是框架 应用方面 来说,框架(Framework)是 整个或部分系统的可重用设计 ,表现为一组抽象构件及构件实例间交互的方法 目的方面 来说,框架是 可被应用开发者定制的应用骨架 。 简而言之,框架其实就是 某种应用的半成品,就是一组组件 ,供你选用完成你自己的系统。简单说就是使用别 人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。 框架要解决的问题 框架要解决的最重要的一个问题是 技术整合 的问题,在 J2EE 的 框架中,有着各种各样的技术,不同的 软件企业需要从 J2EE 中选择不同的技术,这就使得软件企业最终的应用依赖于这些技术,技术自身的复杂性和技 术的风险性将会直接对应用造成冲击。而应用是软件企业的核心,是竞争力的关键所在,因此 应该将应用自身的设计和具体的实现技术解耦 。 这样,软件企业的 研发将集中在应用的设计上,而不是具体的技术实现 , 技术实现是应 用的底层支撑,它不应该直接对应用产生影响 。 软件开发的分层重要性 框架的重要性在于它 实现了部分功能 ,并且能够很好的 将底层应用平台和高层业务逻辑进行了缓和 。为了 实现软件工程中的“高内聚、低耦合” 。把问题划分开来各个解决,易于控制,易于延展,易于分配资源。我们常见的 MVC 软件设计思想就是很好的分层思想。 分层开发下的常见框架 MyBatis

mybatis-day1

房东的猫 提交于 2020-02-29 17:56:37
MyBatis 框架的引言 a) MyBatis 框架的基本概念 MyBtis 是一个持久层框架,完成是对数据库的访问,操作 ( CRUD )。 b) MyBatis 解决了什么问题 解决 JDBC 访问,操作数据库过程中存在的问题,他是对原有 JDBC 技术的封装 。 JDBC 访问和操作数据库存在问题: 大量的代码冗余 (JdbcTemplate) 手工的处理 ORM ( 麻烦 ) 没有对访问数据进行优化 ( Cache ) c) MyBatis 核心的编程思路 第一个 MyBatis 程序的开发( Hello World ) a) 环境的搭建 ( OpenSource) Ibatis 是 MyBatis 前身 apache 组织 Ibatis3.0 改名 MyBatis google code MyBatis 属于 Github 导入 jar 包 a) Mybatis 核心 jar b) 第三方依赖 lib 目录 c) Oracle 驱动 jar ojdbc14.jar 引入配置文件 a) log4j.properties 【可选】 放置位置 src 根下 日志的配置文件 把 MyBatis 框架运行过程的日志信息打印出来 目的:关注 MyBatis 运行过程。 b) mybatis-config.xml 放置位置 随便 建议放置在 src 根下 配置的是 MyBatis

MyBatis常见面试问题

我是研究僧i 提交于 2020-02-28 22:31:15
一、 JDBC编程有哪些不足之处,Mybatis是如何解决这些问题的? 1) 数据库连接的创建、释放频繁造成系统资源浪费从而影响了性能,如果使用数据库连接池就可以解决这个问题。当然JDBC同样能够使用数据源。 解决:在xml中配置数据连接池,使用数据库连接池管理数据库连接。 2) SQL语句在写代码中不容易维护,事件需求中SQL变化的可能性很大,SQL变动需要改变JAVA代码。 解决:将SQL语句配置在mapper.xml文件中与java代码分离。 3) 向SQL语句传递参数麻烦,因为SQL语句的where条件不一定,可能多,也可能少,占位符需要和参数一一对应。 解决:Mybatis自动将java对象映射到sql语句。 4) 对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。 解决:Mbatis自动将SQL执行结果映射到java对象。 二、 Mybatis编程步骤 ? Step1:创建SQLSessionFactory Step2:通过SQLSessionFactory创建SQLSession Step3:通过SQLSession执行数据库操作 Step4:调用session.commit()提交事物 Step5:调用session.close()关闭会话 三、 MyBatis与hibernate有哪些不同 ? 1

排查读写分离失效原因

孤人 提交于 2020-02-28 18:15:34
相关文章: 分析 @Trannsactional 和 SqlSession 的关系 今天组内一哥们反应说项目中读写分离出现了 BUG:明明加了读库的注解,而且日志也是显示应该要读从库,但是居然还是从主库中读取的数据。于是排查了一下原因,原因就是因为在数据源切换之前使用了声明式事务。 首先介绍一下这个项目中读写分离的实现方式:基于注解(AOP) + AbstractRoutingDataSource ;这是个很常见的使用方式,但是我个人不太推荐这个方式,因为基于注解可设置范围过大,如果不理解其中原理或者项目有特殊要求的时候很容易出现问题,个人比较推荐基于 MyBatis 拦截器做。这个项目在 Service 层和 DAO 层中间增加了一个 Manager 层,一般 Manager 层就是用来进行事务操作。 代码简化如下: //adminService 方法 @Transactional ( rollbackFor = Throwable . class ) public int updateDimensionRegion ( ) { int num = adminManager . countDimensionRegion ( ) ; //便于测试,主库和从库数据不一致 if ( num == 2 ) { log . info ( "read slave....." ) ; }

Spring Boot 2.X(十九):集成 mybatis-plus 高效开发

痴心易碎 提交于 2020-02-28 02:03:57
前言 之前介绍了 SpringBoot 整合 Mybatis 实现数据库的增删改查操作,分别给出了 xml 和注解两种实现 mapper 接口的方式;虽然注解方式干掉了 xml 文件,但是使用起来并不优雅,本文将介绍 mybats-plus 的常用实例,简化常规的 CRUD 操作。 mybatis-plus MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 学习 mybatis-plus: https://mp.baomidou.com/guide 常用实例 1. 项目搭建 1.1 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework

1-初识Mybatis

帅比萌擦擦* 提交于 2020-02-27 07:04:41
1、概述: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis ;2013年11月迁移到Github MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码 Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回 2、JDBC链接数据库的问题: 1) 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题 解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接 2)Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码 解决:将Sql语句配置在XXXXmapper