mybatis注解

115网盘怎么搜索资源

孤者浪人 提交于 2020-01-23 21:51:43
1、啥是 MyBatis? MyBatis 是一个半自动 ORM 持久层框架,她内部对 JDBC 做了封装,并使用 XML 或注解来配置和映射数据库信息,开发人员只需要关注 SQL 语句本身,避免了处理繁琐的数据库映射过程,使 Java 代码和 SQL 完全分离,有利于分层开发,提高开发效率和灵活性。 2、MyBatis 的优缺点和适用场景? 1)优点 基于SQL语句编程,非常灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除SQL与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; 很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 能够与Spring很好的集成; 提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。 2)缺点 SQL语句的编写工作量较大,尤其当字段多、关联表多时。 不支持方言,数据库移植性差。 SQL存在XML文件中,调试不方便。 对动态SQL的支持不是很好,提供的标签过于简单。 由于xml里标签id必须唯一,导致DAO中方法不支持方法重载。 3)适用场景 MyBatis 解耦了 SQL 和 程序代码

MyBatis源码的学习(20)---如何从jdbc到mybatis?

一曲冷凌霜 提交于 2020-01-23 20:59:21
mybatis源码解读,基本简单的流程已经解析的差不多了,这里做个总结:从架构的角度,分析下如何把jdbc封装成myBatis的。 原生的jdbc代码步骤: 1.获取连接(连接信息等可以从配置文件中获取) 2.sql 3.创建statement对象 4.设置参数 5.执行statement 6.结果集映射为java类型 7.释放资源 从架构的角度看问题: 首先,连接信息需要的驱动,数据源信息。可以抽取到配置文件中。 第二,那么sql语句是否也可以提取到配置文件,然后我们从配置文件读sql语句 第三,我们sql中的参数如何赋值 第四,reseultSet如何转为我们需要的java类型 其实,mybatis就是帮我们解决了这四个问题的。 我们的配置信息需要存储:Confguration, 我们的数据库连接时信息需要存储 :DataSource 然后我们的sql怎么存储呢? Mapper.xml文件,还有每一个sql语句这些信息需要存储 XMLMapperBuilder MapperBuilderAssistant XMLStatementBuilder MappedStatement XMLScriptBuilder 然后我们的sql信息的存储 SqlSource SqlNode BoundSql 我们的参数的存储 public class BoundSql { private

自定义注解的场景及其实现

回眸只為那壹抹淺笑 提交于 2020-01-23 04:25:31
自定义注解的场景及其实现 自定义注解的场景 登陆、权限拦截、日志处理,以及各种Java框架,如Spring、Mybatis、Hibernate、JUnit 实现方法 Java自定义注解通过 运行期间靠反射获取注解 ,实际开发过程中,如果我们需要获取某个方法的调用日志,可以通过 AOP(动态代理机制) 对方法添加切面,通过反射获取方法包含的注解,如果包含了日志注解,就进行日志记录 Java反射实际是通过对Class对象进行操作而实现,Class对象为我们提供了一系列方法对类进行操作 在JVM角度上来说, Class文件 是 一组以8字节为基础单位的二进制流,各个数据项目按照严格的顺序紧凑的排列在一起 ,里面包含了类、方法、字段等有关数据, 通过对Class数据流进行相应的处理 ,就可以得到相应的字段、方法、类等数据。 来源: CSDN 作者: 量子计算机牛逼 链接: https://blog.csdn.net/qq_41877948/article/details/103991100

Mybatis学习04

帅比萌擦擦* 提交于 2020-01-20 23:13:10
title: Mybatis学习04 date: 2020-01-20 21:48:00 tags:Mybatis学习的第四篇笔记 这次的笔记主要是mybatis中的注解 <!--more--> 1、实体类的注解 实体类的注解在mybati的XML文件中配置。 注解的位置应该在setting之后,typeHandlers之前。 XML文件中各个配置顺序为:properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,reflectorFactory,plugins,environments,databaseIdProvider,mappers 实体类的注解有两种方式 将具体的实体类起一个可以自定义的别名,如: <typeAliases> <typeAlias type="com.neversettle.domain.User" alias="User"/> </typeAliases> 将同一包下的所有实体类注解为其名称,如User注解为User及user,官方推荐使用user,实际中User和user都可以,注解方式为: <typeAliases> <package name="com.neversettle.domain"/> </typeAliases> 2、SQL的注解

SSM框架面试题及答案整理

那年仲夏 提交于 2020-01-20 21:26:03
一、Spring面试题 1、Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成。 两大核心: ①. IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,service层反转给action层,Spring顶层容器为BeanFactory。 ②. AOP:面向切面编程 2、Spring的事务? 编程式事务管理:编程方式管理事务,极大灵活性,难维护。 声明式事务管理:可以将业务代码和事务管理分离,用注解和xml配置来管理事务。 3、IOC 在项目中的作用? 作用:Ioc解决对象之间的依赖问题,把所有Bean的依赖关系通过配置文件或注解关联起来,降低了耦合度。 4、Spring的配置文件中的内容? 开启事务注解驱动 事务管理器 开启注解功能,并配置扫描包 配置数据库 配置SQL会话工厂,别名,映射文件 不用编写Dao层的实现类 5、Spring下的注解? 注册:@Controller @Service @Component 注入:@Autowired @Resource 请求地址:@RequestMapping 返回具体数据类型而非跳转:@ResponseBody 6、Spring DI 的三种方式? 构造器注入:通过构造方法初始化 <constructor-arg index="0" type=

Mybatis & Mybatis-Plus

别说谁变了你拦得住时间么 提交于 2020-01-20 04:30:01
文章目录 概述 概述 MyBatis:一种操作数据库的框架,提供一种Mapper类,支持用java代码进行增删改查等数据库操作,sql语句可以用注解写在程序中,或者写在xml文件中。 Mybatis Generator:自动为Mybatis生成简单的增删改查sql语句的工具,省去一大票时间,两者配合使用,开发速度快到飞起。 Mybatis Plus:国人团队苞米豆在Mybatis的基础上开发的框架,荣获了2018最受欢迎国产开源软件第5名。Mybatis-Plus在Mybatis基础上扩展了许多功能,是一个Mybatis的增强工具,它在Mybatis的基础上做了增强,却不做改变。在使用Mybatis-Plus之后既可以使用Mybatis-Plus的特有功能,又能够正常使用Mybatis的原生功能。Mybatis-Plus(以下简称MP)是为简化开发、提高开发效率而生,但它也提供了一些很有意思的插件,比如SQL性能监控、乐观锁、执行分析等。 Mybatis Plus Generator:同样为苞米豆开发,比Mybatis Generator更加强大,支持功能更多,自动生成Entity、Mapper、Service、Controller等。 总结 数据库框架:Mybatis Plus > Mybatis 代码生成器:Mybatis Plus Generator > Mybatis

【MyBatis】Mybatis的java对象名和数据库表名不同怎么办?

不问归期 提交于 2020-01-20 01:49:54
java对象名 和 数据库表名 不同怎么办? 提问: 我想请教一下,在使用mybatis的注解的时候,如果出现java对象名和数据库表名不同的时候,如何写mapper。 比如, UserAccount 是 java对象 ,而 数据库表名 为 user_account 回答: 不影响使用,不需要处理 Mybatis 不需要 对象和数据库表名称一致,因为查询语句中包含了从哪个表查询,而查询的结果集如何映射到对象的属性可以通过 resultMap 标签进行映射。 < resultMap type = " com.struts.entity.User " id = " UserList " > <!-- 主键 --> < id column = " userid " jdbcType = " VARCHAR " property = " userid " /> < result column = " username " jdbcType = " VARCHAR " property = " username " /> < result column = " registDate " jdbcType = " VARCHAR " property = " registDate " /> < result column = " password " jdbcType = " VARCHAR

mybatis注解开发

*爱你&永不变心* 提交于 2020-01-20 00:46:22
MyBatis可以利用SQL映射文件来配置,也可以利用Annotation来设置。MyBatis提供的一些基本注解如下表所示。 注解 目标 相应的XML 描述 @CacheNamespace 类 <cache> 为给定的命名空间(比如类)配置缓存。属性: implemetation,eviction, flushInterval , size 和 readWrite 。 @CacheNamespaceRef 类 <cacheRef> 参照另外一个命名空间的缓存来使用。 属性:value,也就是类的完全限定名。 @ConstructorArgs 方法 <constructor> 收集一组结果传递给对象构造方法。 属性:value,是形式参数的数组 @Arg 方法 <arg> <idArg> 单独的构造方法参数,是ConstructorArgs 集合的一部分。属性:id,column,javaType,typeHandler。 id属性是布尔值,来标识用于比较的属性,和<idArg>XML 元素相似 @TypeDiscriminator 方法 <discriminator> 一组实例值被用来决定结果映射的表 现。属性:Column, javaType , jdbcType typeHandler,cases。 cases属性就是实例的数组。 @Case 方法 <case>

MyBatis中的@MapKey注解

做~自己de王妃 提交于 2020-01-18 22:32:28
有时我们的一条查询语句返回了多个实体对象或Map集合 比如这样: List<User> users = abcDao.getNamesByIds(idList); 但我们在sql中这样让它返回 Map<id, User> m = abcDao.getNamesByIds(idList); 那 ResultType 属性可以指定为 User 并且在方法上加上注解 @MapKey("id") Map<id, User> m = abcDao.getNamesByIds(idList); Mybatis官方文档的对该注解的解释 注解 使用对象 描述 @MapKey 方法 这是一个用在返回值为 Map 的方法上的注解。它能够将存放对象的 List 转化为 key 值为对象的某一属性的 Map。属性有: value ,填入的是对象的属性名,作为 Map 的 key 值 来源: https://www.cnblogs.com/heliusKing/p/12210319.html

Mybatis注解开发环境配置

时光总嘲笑我的痴心妄想 提交于 2020-01-18 19:39:32
Mybatis注解开发环境配置 pom.xml <?xml version="1.0" encoding="UTF-8"?> < project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns: xsi = " http://www.w3.org/2001/XMLSchema-instance " xsi: schemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd " > < modelVersion > 4.0.0 </ modelVersion > < groupId > org.example </ groupId > < artifactId > TestDemo1 </ artifactId > < version > 1.0-SNAPSHOT </ version > < packaging > jar </ packaging > < dependencies > <!-- spring--> < dependency > < groupId > org.springframework </ groupId > < artifactId > spring-context </