mybatis一对一

Mybatis两表连接(一对一)

Deadly 提交于 2019-12-05 02:30:16
OrderJudgeMapper.xml <?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"> <mapper namespace="com.datangedu.cn.dao.mapper.OrderJudgeMapper"> <resultMap type="com.datangedu.cn.model.BusinessOrder" id="OrderJudgeMap"> <id property="id" column="bid" /> <result column="SERVER_ID" jdbcType="VARCHAR" property="serverId" /> <result column="ORDER_INFO" jdbcType="VARCHAR" property="orderInfo" /> <result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" /> <!-- association :配置一对一属性 --> <!--

MyBatis之关联关系

梦想与她 提交于 2019-12-04 04:21:35
关联关系 在关系型数据库中,表与表之间很少是独立且没有关系的,大多数表都具有复杂的关系,一张表连接着多张表,在MyBatis中可以进行多表连接处理 关联关系中有1对1、1对多、多对多 1对1关系 我们有一张员工表(t_emp),一张部门表(t_dept)。员工表中的一条记录对应于部门表中有且仅有一条记录。这就是一对一的关联关系。 查询每个员工的信息及对应的部门信息 1、创建maven项目 在pom.xml文件中导入相关依赖 < 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 > com.zhouym </ groupId > < artifactId > mybatis-lazy </ artifactId > < version > 0.0.1-SNAPSHOT </ version > <

mybatis

半腔热情 提交于 2019-12-03 14:52:11
Mybatis Mybatis-hw; Mybstis的增,删,改,查; 动态的sql语句标签; mapper代理; jdbc有缺点: 四步:加载驱动,获取链接,操作数据库,关闭链接, 封装:经常修改的内容放到配置文件中,不经常修改的放到java文件中 jdbc封装;第一步和第二步放到一个方法中,第四步放到第一个方法中,整体用try/catch如果抛异常要事务回滚; 万恶的占位符(?)是占位符的位置,以及赋值的时候要注意序号; 关联关系;   一对一:A和B; 一个A有一个B, 一个B有一个A ,这就是A和B ,一对一;   一对多或多对一:A和B; 一个A有多个B, 多个B有一个A; 这就是A和B:一对多; B和A 就是多对一   多对多:A和B; 一个A有多个B, 一个B有多个A这就是A和B:多对多; 缓存:当访问量比较大的时候,可以重复使用查询的数据,尽量减少数据库的访问次数; 处处的把数据库里面的记录一个一个的转换成Java对象(查询单条);Java对象处处的转换成数据库的记录(保存 ) 介绍: Mybatis:首先它是一个半自动的ORM框架;O:(object),R:(Relation),M:(Mapping);Object:(java就是一个面向对象编程语言),R:(Relation)数据库;mysql:其实就是一个面向关系型的数据库;M:mapping:映射的意思

Mybatis面试题一

半腔热情 提交于 2019-12-03 07:26:41
1、什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 (2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 (3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 2、Mybaits的优点: (1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 (2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; (3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 (4

mybatis中sql语句查询操作

匿名 (未验证) 提交于 2019-12-03 00:34:01
where if where可以自动处理第一个and。    <!-- 根据id查询用户信息 --> <!-- public User findUserById(int id); --> < select id = "findUserById" parameterType = "user" resultType = "user" > select * from user <!-- 当有if条件成立时,where会自动拼接查询条件,并处理第一个and --> < include refid = "where_if_if" /> </ select > <!-- sql片段抽取 --> < sql id = "where_if_if" > < where > <!-- 动态拼接sql查询条件 --> < if test = "username != null and username != ‘‘" > and username like "%"#{username}"%" </ if > < if test = "sex != null and sex != ‘‘" > and sex = #{sex} </ if > </ where > </ sql > foreach 向sql传递数组或List,mybatis使用foreach解析 ?

Mybatis之延迟加载

匿名 (未验证) 提交于 2019-12-03 00:22:01
延迟加载又叫懒加载,也叫按需加载。也就是说先加载主信息,在需要的时候,再去加载从信息。 . 在mybatis中,resultMap标签的association标签和collection标签具有延迟加载的功能。 查询订单信息,再按需查找关联的用户信息,即延迟查找关联的信息 1、 创建一个statement来查询订单信息 2、 创建一个statement来查询用户信息 订单映射文件 < resultMap type = "com.zyj.mybatis.dto.OrdersExt" id = "OrderRstMap" > <!-- 订单信息 --> < id column = "id" property = "id" /> < result column = "createtime" property = "createtime" /> <!-- 用户信息(一对一) --> <!-- select:指定关联查询的查询statement(即查询用户的statement的id),然后将查询结果,封装到property属性指定的变量中 --> <!-- column:通过column指定的列所查询出的结果,作为select指的statement的入参 --> <!-- 注意:如果select指定的statement,入参需要多个值,需要在column中{col1=prop1,col2

myBatis深入学习

匿名 (未验证) 提交于 2019-12-02 23:55:01
本文在前一篇文章的基础上记录了对mybatis的表之间的关系映射、延迟加载、缓存等高级功能的学习。 1.表之间的关系映射   既然要明确表之间的关系映射,那么首先要分析数据库中表之间的关系,假设数据库中现在有4张表:user(用户表,记录了购买商品的用户信息)、orders(订单表,记录了用户所创建的订单)、orderdetails(订单明细表,记录了订单的详细信息即购买商品的信息)、items(商品表,记录了商品信息),对数据库中表的分析要重点看表中的 主键、非空字段、外键 ,经过对表的分析,可以得到如下的数据模型分析:    一对一查询   一对一的查询在实现时可以使用resultType和resultMap实现,关于二者的区别如下:   resultType:使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射。如果没有查询结果的特殊要求建议使用resultType。   resultMap:需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将关联查询映射pojo的属性中。resultMap可以实现延迟加载,resultType无法实现延迟加载。 一对多查询  

面试官都会问的Mybatis面试题

匿名 (未验证) 提交于 2019-12-02 23:35:02
1、什么是Mybatis? 1、Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 2、MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 3、通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 2、Mybaits的优点: 1、基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 2、与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; 3、很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 4

mybatis的执行流程 #{}和${} Mysql自增主键返回

匿名 (未验证) 提交于 2019-12-02 22:06:11
n Mybatis SqlMapConfig.xml Mybatis Mapper.xml Sql Sql SqlMapConfig.xml n Mybatis SqlSessionFactory n SqlSession SqlSession n Mybatis Executor Executor MappedStatement n MappedStatement Mybatis Mybatis Sql M apper.xmlSql Mapped Statement Sql id Mapped statement id n Executor MappedStatement Sql java Sql Jdbc PreparedStatement Executor MappedStatement Sql Java Jdbc 1.1.1.1. #{} ${} n #{} 1#{} PreparedStatement ? 对字符串对单Sql。 select * from user where username = #{username} ,username 为小 张 select * from user where username = ‘小张’ 2 #{} Pojo parameterType#{} n ${}: 1${} Sql ,只是简单的拼接order by ${id} id

MyBatis框架之SQL映射和动态SQL

匿名 (未验证) 提交于 2019-12-02 21:53:52
使用MyBatis实现条件查询 1.SQL映射文件: MyBatis真正的强大之处就在于SQL映射语句,MyBatis专注于SQL,对于开发人员来说也是极大限度的进行SQL调优,以保证性能。下面是SQL映射文件的几个顶级元素的配置:   1.mapper:映射文件的根节点,只有一个属性namespace(命名空间),作用如下:     (1)用于区分不同的mapper,全局唯一。     (2)绑定DAO接口,即面向接口编程,当绑定一个接口,就不用写此接口的实现类,会通过接口的完全限定名找到对应的mapper配置来执行SQL语句, 所以,namespace的命名必须要写接口的完全限定名。   2.cache:配置给定命名空间的缓存。   3.cache-ref:从其他命名空间引用缓存配置。   4.resultMap:用来描述数据库结果集和对象的对应关系。   5.sql:可以重用的SQL块,也可以被其他语句引用。   6.insert:映射插入语句。   7.update:更新映射语句。   8.delete:删除映射语句。   9.select:映射查询语句。 2.使用select完成单条件查询   <select id = "GetUserByName" resultType = "User" parameterType = "string">     select *