配置文件方式--快速入门
这里插入几个学习时的错误:
- mybatis-config.xml找不到Mapper:我的原因是把Mapper放到了Java下的SRC路径,但IDEA并不会寻找到,所以要么是在pom.xml中加上。。。(没看),我用的是:在resource下建立一个同名的包:com/。/xxx
如果不想建立一个新包(但一般都会吧?),参考这个链接(里面有个用代码解决的方法):
https://blog.csdn.net/ShiXinXin_Harbour/article/details/100639021 - 明明连接上了数据库,但Mapper中报错: Unable to resolve table 'course' ,解决:在MySQL里的DataSource里的project setting下主动连接需要的数据库。
- 明明连接上了数据库,但找不到数据库,很简单,在“ 1 of 18”(我的 显示)中点击数据库即可,因为你并没有让数据库显示出来,所以它就不显示了。
- 以上错误的正确解决方法都在CSDN的Java容器中收藏着
- 图中总是报错,说找不到对应的方法(大致这意思)
解决方法:因为“。。。”的对于的是Mapper.xml的namespace,所以namespace必须要一致! - 错误原因:“Cause: org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping ” ,
解决方法:因为我在调用这个方法时,使用的是Map进行封装,所以在Mapper中的paramType也要是Map,所以就解决了
- 老师说的很好:delete、insert、update操作没有resultType属性,默认返回int型
parameterType=Map,表示参数类型为Map,用Map封装参数 #表示在获取参数时可防止SQL注入攻击,应尽量使用#;模糊查询时,使用$
INSERT INTO users SET username=,这种SQL语句是MmySql特有的扩展功能 - 上面问题7的再次说明,不想写了,直接链接:https://blog.csdn.net/ShiXinXin_Harbour/article/details/100655088
Mapper代理开发:
最终的项目结构
步骤:
步骤的第一步,需要注意:建包是,不能用“。”分隔,要用“/”分隔
第二步:
加载SQL映射文件(Mapper):
郝娟老师教的跟这里的不同点:这里是有Mapper接口和Mapper.xml,但郝老师的是CourseDao取代了Mapper接口
插件mybatix简化了Mapper接口有SQL语句之间的关系,直接点那个“胖鸟”即可跳转到相应代码区域。
查询所有数据&步骤:
重点内容:不能自动映射属性名与列名
其实也可以在mybatis配置文件中设置。
参数占位符;parameterType;SQL语句中特殊字符处理
模糊查询,需要代码自动添加 模糊符号:%
多条件查询(动态查询条件)
SQL语句设置多个参数的方式:加上@Param注解;用实体类封装参数;map集合
动态SQL & 2种标签 & 多条件查询:
单条件动态查询 & choose标签;when标签;otherwise标签 :
凡是更新数据库的操作,必须提交事务:手动提交事务或者设置自动提交事务
需要添加数据,但是添加数据后,需要这条数据的ID:
keyProperty是实体类的属性,并不是sql字段(网上查的)
动态更新数据:
set标签,避免许多错误
批量删除数据 & 参数的集合 & 还是占位符 & 别忘了“()” & 或者用图中的分隔符 :
别名的设置:是在mabatis的主配置文件中设置的。
想要根据ID删除一条数据,本来想用#{id}的,但可惜的是总报错,所以就只能先这样,后续在学习这一点:
mybatis参数传递
总结mybatis编写代码的套路:
- 在pom.xml中引入对应的依赖,包括:mybatis;log4j;connector-mysql;等
- 创建mybatis主配置文件:mybatis-config.xml,可以从mybatis中文网中直接复制,修改对应的数值(需要连接的是数据库,不是数据库的表)即可。
- 假设需要操作的数据库为Animal,操作的表为Bird,生成pojo类,将Bird对应的属性,方法都生成好。
- 写出Bird对应的Mapper接口,写出需要用SQL执行的方法。
- 写出Mapper接口的实现配置文件:即BirdMapper.xml,用静态或动态的SQL语句实现接口的方法。
- 写一个测试类,测试方法。这个类的代码也可在mybatis中文网中复制,修改文件路径,修改对应的方法、类名即可。