mybatise代码生成,有开源框架可以用,比较mybatise-plus
日志埋点 备忘
SpringBoot启动注解 扫描Mapper 扫描包
@MapperScan
@ComponentScan
实现CRUD
首先,需要在项目的启动类上添加@MapperScan(baskPackages="包路径"),用来扫描该包下的映射类,也就是让SpringBoot容器加载这些映射类。
代码演示:创建service及其实现类,并且接口中有如下方法。
通过查看userMapper(生成的插件),它其中拥有很多方法。
@ComponentScan(basePackages = {"com.imooc","org.n3r.idworker"})
外部包
Note: further occurrences of this error will be logged at DEBUG level. 未知错误待解决
多次在跟随老师的步骤设置了全局变量处理以后。后面mybatis测试始终报error错误。没有找到解决办法。。。。
按照老师流程idea这个部分会出现错误Failed to determine a suitable driver class
此处的有可能会出现mapper 没法注入成功的方法,可以试着在mapper类文件开头增加 @Repository注解
sid.nextShort() 可以在电商环境中确保用户id是唯一的
usermapper有一些内置的CRUD的方法
@MapperScan(basePackages="com.imooc.mapper")实现mapper的映射
这个时候的mapperScan的引用应该是tk.mybatis,如果引用org.mybatis,在传入数据的时候回报错。
//扫描包路径
@MapperScan(basePackages="包名")
//扫描所有需要的包,包含一些自用的工具类包所在的路径,组件扫描
@ComponentScan(basePackages={"包名1", "包名2"})
id生成器
org.n3r.idworker org.n3r.idworker.strategy org.n3r.idworker.utils
updata...selective: 字段有值的情况下才会更新
(sid)id生成器
在配置类中添加mybatis扫描器的路径:
updateByKey(): 会将model 中未设置的值在数据库中更新
updateBykeySelective(): 不会更新 model 中未设置的字段,在生产环境中常用
加入Idworker的三个包之后 就要在启动类中加入@component注解 进行扫描 添加唯一索引随机生成器(from Twitter)
加入Idworker的三个包之后 就要在启动类中加入@component注解 进行扫描
项目启动@MapperScan扫描mapper类
一边听老师讲 一边
https://github.com/leechenxiang/imooc-springboot-starter
https://github.com/abel533/MyBatis-Spring-Boot
看代码,一边自己搭建 ,这样学才快!
测试报错:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.base.BaseInsertProvider.dynamicSQL). Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseInsertProvider 解决方法:将import org.mybatis.spring.annotation.MapperScan;此的导入地址更换成: import tk.mybatis.spring.annotation.MapperScan;