Mybatis是开源的框架,主要是解决JDBC中硬编码和操作繁琐这类问题
若不连接idea和数据库,则会出现不识别表的情况,但对程序运行影响不大
Mapper代理开发:步骤2中只要在resources里设置与java中一样的目录即可
步骤4的代码实现
Usermapper usermapper = sqlsession.getMapper(Usermapper.class);List
environmens:配置数据库连接环境信息,可以配置多个environment,通过default属性切换不同的
类别名(typeAliases):可以简化包名
注意xml的顺序要按照官方文档来
配置文件完成增删改查映射最好使用resultmap进行注释
注意: #里面为大括号而不是括号:参数占位符有#{}(会替换为?,可以防止sql注入),还有${}(会出现sql注入)。一般都使用#{},在表名或者列名不固定的情况下可以使用${}
parameterType一般情况下可以省略掉。
特殊字符的处理:1、转义字符。2、CDATA区
条件查询参数:1、散装参数用param来修饰,2、对象参数:对象的属性名称要和参数占位符名称一致
3、 Mapper的代理对象
//散装参数 String companyName = "kuaile"; companyName ="%"+companyName+"%"; //对象参数 Brand brand1 = new Brand(); brand1.setCompanyName(companyName); //Mapper接口饿代理对象 Map map = new HashMap(); map.put("companyName",companyName);
模糊查询用like,前面需要处理参数
String companyName = "kuaile"; companyName ="%"+companyName+"%";
在实际中并不是所有条件都会用上,在此需要使用动态条件查询
条件之间使用and会导致若中间有null就会出错, 在此可以使用1、一个恒等式来解决(图中为1=1)2、使用mysql中的
单条件的动态查询
添加
这里涉及mysql事务的问题,需要提交事务,否则会发生回滚(或者在获取对象时设置为自动提交)
SqlSession sqlSession = sqlSessionFactory.openSession(true);
修改
用int则会返回受影响行数
在此要注意最后一条if语句不用逗号
删除
mybatis会将数组参数封装为一个Map集合,默认:array = 数组,使用@Param注解改变map集合的默认key的名称
参数传递有多个参数时,会封装为Map集合
注解