在mybatis.xml里加
官方:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html
工作流程,原理
1,功能:
用来描述如何从数据库结果集中来加载对象
是解决列名不匹配
2,“隐式resultMap”:
resultType使用下(不需要显式地用resultMap),MyBatis 会在幕后自动创建一个 ResultMap,再基于属性名来映射列到 JavaBean 的属性上。
如果列名和属性名没有精确匹配,可以在 SELECT 语句中对列使用别名(这是一个基本的 SQL 特性)来匹配标签。比如:
列名对应:
(1)字段名与属性名一致
(2)自动映射开启,驼峰命名法
(3)使用别名,匹配标签
3,“显式resultMap”
4,高级结果映射
①建立表时直接建立约束,当父表删除数据时数据库会自动去删除子表中的数据,
②通过代码实现级联删除,先删除子表数据,然后删除父表中的数据。
https://blog.csdn.net/liyantianmin/article/details/41893249
mybatis-plus级联,多表联查
和mybatis一样,框架还不支持级联配置和维护
设置association元素中的fetchType=lazy
懒加载 减少了性能消耗,一定程度上缓解了1+n带来的性能问题
及查询n+1,1+n问题
https://blog.csdn.net/wangjun5159/article/details/52389480
https://www.jianshu.com/p/c89a888a53e3
下次执行插件xml会出现重复方法实现?
生成的xml中的resultMap的生成规则(
数据表进行生成操作自己写
功能:
使用 mybatis generator 生成表格对应的pojo、dao、mapper,
以及对应的example的pojo、dao、mapper,自带对单表的增删改查方法,
官方还没多表配置
https://blog.csdn.net/bandaotixiruiqiang/article/details/72478361
dao接口:
public List queryAll3(Course course);
course.xml实现:
where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句。而且,若语句的开头为“AND”或“OR”,where 元素也会将它们去除。
如果 where 元素没有按正常套路出牌,我们可以通过自定义 trim 元素来定制 where 元素的功能。比如,和 where 元素等价的自定义 trim 元素为:
…
https://www.cnblogs.com/mingyue1818/p/3714162.html
多参数情况下,也可使用注解@Parm
把注释删掉,一切OK!
https://blog.csdn.net/apicescn/article/details/79507610
@Select支持简单的查询,对动态sql支持弱
mybatis 3.x提供
@SelectProvider,于使用该接口自定义(动态)SQL的解析方式
MyBatis 3 构建在全面且强大的基于 Java 语言的配置 API 之上。这个配置 API 是基于 XML 的 MyBatis 配置的基础,也是新的基于注解配置的基础。注解提供了一种简单的方式来实现简单映射语句,而不会引入大量的开销。
@SelectProvider(type = UserSqlProvider.class)
List getUsersByName(String name);
// Implements the ProviderMethodResolver on your provider class
class UserSqlProvider implements ProviderMethodResolver {
// In default implementation, it will resolve a method that method name is matched with mapper method
public static String getUsersByName(final String name) {
return new SQL(){{
SELECT("*");
FROM("users");
if (name != null) {
WHERE("name like #{value} || '%'");
}
ORDER_BY("id");
}}.toString();
}
}
使用Java API方式代替xml实现sql的生成。
https://www.jianshu.com/p/828d2bd12b2f
及使用,注意事项
https://www.zhihu.com/question/39356740
@autowired 是spring bean的,使用前提是Springbean对象
@resource 是J2EE的
及使用,注意事项
https://www.cnblogs.com/teach/p/5685545.html
sql 注入:https://blog.csdn.net/fmwind/article/details/59110918
mybatis启动数据库预编译,使用占位符? 来解决sql注入(编译过程起作用)