随笔分类 - Mybatis学习
学习Mybatis时写出来的潦草笔记
摘要:在Shop对象中有一个Area对象, 所以在查询Shop的过程中,会把Area对象也直接查询出来, 甚至把商铺的所有商品都查询出来了
阅读全文
摘要:积极懒加载是指如果你访问一个对象的属性,Mybatis就会帮你把需要进步一查询的该属性或者其他属性在数据库中查询出来. 不积极懒加载是指,有这种必要的时候,采取进行必要的数据库检索 我看的教程中的Mybatis版本默认是积极的lazy加载, 而我实际用的Mybatis3.4.6实际上默认不积极的la
阅读全文
摘要:discriminator或者叫做分类器 Vehicle类 package io.github.coinsjack.pojo;import java.util.Date;public class Vehicle { protected Integer id; protected String vin
阅读全文
摘要:知识储备: 对于大部分编程语言的函数来说, 函数的signature是函数名和函数参数,而对于函数参数的名称, 编译器不关心. 为ShopCustom创建一个构造函数 public ShopCustom(Integer id, String shopName, String shopDesc) {
阅读全文
摘要:执行流程 先执行关联查询,一次性将所有数据都查询出来 再将所有查询出来的列组织成嵌套的结果对象 其实是与嵌套查询的区别在于, 嵌套结果是将每次查询出来的结果集进行组装, 嵌套查询是依照结果集中的某个column比如说id来去进行另一个查询 接口 Shop getShopByIdNestedResul
阅读全文
摘要:大部分现实应用中我们并不需要把数据库中的整行数据都拉出来, 所以要做扩展结果集 笔记: 在实际项目过程中, 先用逆向工程自动生成, 然后再做扩展结果集来满足大部分的现实需要 本节内容应该注意扩展结果集的命名方式 创建一个扩展类ShopCustom, (这样命名可以和Shop在项目树里面排列在一起)
阅读全文
摘要:一对多和多对多是一样的. 而多对多是指 A对于B来说是一对多的关系, 同时B对于A来说也是一对多的关系, 互为一对多,即为多对多. 比如说一个标签下面有多篇文章,一篇文章也可能有多个标签 Shop实体类设计 List<Product> productList; List<Product> produ
阅读全文
摘要:Shop实体类 package io.github.coinsjack.pojo;import java.io.Serializable;import java.sql.Date;public class Shop implements Serializable{ Area area; } pack
阅读全文
摘要:二级缓存默认不开启, 开启之后, 可以在不同的session范围内执行相同的数据查询, 只进行一次数据库检索 开启设置 在mapper文件中 设置cache 在实体类中实现序列化接口, 否则会报错NotSerializableException 测试 @Testpublic void testCac
阅读全文
摘要:如果想要复用sql语句,就需要了解sql片段 改写先前的代码 接口 Shop getShopByIdAlias(Integer id); Shop getShopByIdAlias(Integer id); 映射文件 <sql id="columnAliasSql"> `shop_id` as `i
阅读全文
摘要:测试 @Testpublic void testCacheLevelOne() { SqlSession session = MyBatisUtil.getSqlSession(); ShopMapper mapper = session.getMapper(ShopMapper.class); S
阅读全文
摘要:需求 假设我们现在想要将用户勾选中的商铺批量删除或者进行批量其他操作 接口 int deleteShopInList(List<Integer> ids); int deleteShopInList(List<Integer> ids); 映射 在这里注意foreach的collection属性只有
阅读全文
摘要:where元素会在90%的情况下管用,但是如果where不管用,可以试试trim元素 和where等价的trim <trim prefix="WHERE" prefixOverrides="AND |OR "> ... </trim> <trim prefix="WHERE" prefixOverr
阅读全文
摘要:需求 查询id小于10,并且shopname包含"关键词"的记录 如果用户没有输入任何关键词, 那么列出所有结果 接口 List<Shop> get10ShopByTitle(String value); List<Shop> get10ShopByTitle(String value); 映射 <
阅读全文
摘要:需求 如果用户限定了地址, 或者限定了名称, 或者都限定了, 给出用户想要的结果 接口 List<Shop> getShopListByCondition(Shop condition); List<Shop> getShopListByCondition(Shop condition); 映射 <
阅读全文
摘要:接口 int deleteShopById(int id); int deleteShopById(int id); 映射 <delete id="deleteShopById"> DELETE FROM `tb_shop` WHERE `shop_id` = #{id}</delete> <del
阅读全文
摘要:方案一, 先查询再修改 接口 int updateShop(Shop shop); int updateShop(Shop shop); 映射 <update id="updateShop" parameterType="Shop"> UPDATE `tb_shop` SET `owner_id`
阅读全文
摘要:插入过程 接口 int insertShop(Shop shop); int insertShop(Shop shop); 映射 <insert id="insertShop" parameterType="Shop" useGeneratedKeys="true" keyProperty="id"
阅读全文
摘要:首先在接口中添加方法 List<Shop> getShopListOrderById(); List<Shop> getShopListOrderById(); 在mapper映射文件中添加相应语句 注意: 返回类型仍然是元素的类型,而不需要list, mybatis会自动组装成list <sele
阅读全文
摘要:第一种方法使用索引 一般不使用,不记录 第二种方法使用注解 接口 List<Shop> getShopListByPageAno(@Param(value = "offset") int offset, @Param(value = "pagesize") int pagesize); List<S
阅读全文

浙公网安备 33010602011771号