Mybatis
pluszzh
这个作者很懒,什么都没留下…
展开
-
Mybatis数据库连接池技术源码分析(2)
本文对mybatis的POOLED和UNPOOLED连接池技术进行源码分析和比较MyBatis 在初始化时,根据的 type 属性来创建相应类型的的数据源 DataSource,即: type=”POOLED”:MyBatis 会创建 PooledDataSource 实例1. 何时创建DateSource?如何创建?MyBatis 是通过工厂模式来创建数据源 DataSource 对象的...原创 2019-08-13 17:35:11 · 106 阅读 · 0 评论 -
Mybatis的动态sql查询(2)
Mybatis的动态sql的拼接基本语法依赖于<if>标签和<Where>标签,在遍历时用到<foreach>标签需求一通过包装类包装查询对象,根据对象属性的有无来进行动态拼接sql语句包装类, 包装user对象public class QueryVo { private User user; public User ge...原创 2019-08-13 20:09:04 · 116 阅读 · 0 评论 -
Mybatis的一对一关系的查询方式(3)
数据库中现有User表Account表User类Account类我们分析账户和用户表之间的关系一个用户可以拥有多个账户一个账户只能被一个用户拥有用户和账户之间是一对多关系账户和用户之间是一对一关系1. 我们怎么查询一对一关系呢?(及查询账户的同时带有用户信息)解决方式一 定义一个新的实体类继承Account类,并在其中定义需要从数据库中得到的字段,比如userna...原创 2019-08-13 21:43:17 · 173 阅读 · 0 评论 -
Mybatis的一对多,多对多关系的查询方式(4)
多对多关系其实就是双向的多对一关系,只要学会多对一关系,就可以处理多对多关系,无非多对多关系需要一个中间表进行连接查询即可。现有User表 Role表 和中间表 User_Role表一 实现mybatis一对多的基本查询的步骤1.创建对应的数据库表的实体类2.创建实体类的Dao层接口3.创建实体类的映射配置文件4.编写sql语句5.测试1.1User类1.2Ro...原创 2019-08-14 10:00:45 · 207 阅读 · 0 评论 -
Mybatis的延迟加载(5)
Mybatis的延迟加载1.1 为什么要进行延迟加载:在进行数据库查询时,通常会进行多表联合查询。表之间的关系有一对一关系,多对一,一对多,多对多。我们在进行多表查询时,通过表与表之间的连接进行多表查询。在做表与表之间的联接时对数据库的性能消耗较大。在进行一对多的查询时。假如现在有一个用户表,一个角色表。一个用户可以有多个角色,一个角色对应一个用户。现在只需要查询用户信息,暂时不需要角色信...原创 2019-08-14 20:42:08 · 129 阅读 · 1 评论 -
手撕实现Mybatis框架(1)
一.mybatis的配置信息1.Mybatis的主配置文件<configuration> <!-- 配置环境 --> <environments default="mysql"> <!-- 配置mysql的环境 --> <environment id="mysql"> ...原创 2019-08-11 21:39:58 · 231 阅读 · 0 评论 -
jdbc编程和mybatis的比较
1. 性能:JDBC编程需要频繁的与数据库建立连接,释放连接造成系统资源浪费mybatis在主配置文件中,可以指定连接池的参数,使用连接池来管理连接对象2.可维护性:JDBC编写sql语句时,语句都嵌入到Java代码中,如果后期要对sql语句修改,需要重新编译代码mybatis可以通过修改映射配置文件的代码即可,不需要做其他更改3.输入参数JDBC的输入参数,通过prepa...原创 2019-08-13 08:35:26 · 316 阅读 · 0 评论 -
解决mybatis和数据库字段名不一致的两种方式
1.查询sql语句取别名,使查询出来的结果的别名和实体对象属性名称一致即可优点:执行效率高,无需解析其他配置信息缺点:需要编写的sql语句编程,编码繁琐2.在映射配置文件中配置 -- type 属性:指定实体类的全限定类名 -- id 属性:给定一个唯一标识,是给查询 select 标签引用用的。 --> <resultMap type="全限定类名" id="标...原创 2019-08-13 08:52:49 · 969 阅读 · 0 评论 -
Mybatis中${}和#{}到底有什么区别?
#{}相当于preparestatement的占位符,${}相当于拼接字符串1.#{}#{}会进行预编译,与preparestatement的占位符相同,阅读源码看出mybatis把#{}直接替换为?,通过传入的参数来进行对占位符的填充,就像我们用preparestatement一样。好处:预编译,防sql注入2.${}对${}的内容原样输出,需要自己加引号实现字符串的拼接缺点:...原创 2019-08-13 09:06:47 · 178 阅读 · 0 评论