MyBatis案例--环境准备
1、依据之前在Navicat建立数据表的方法,新建立一个数据表
2、将数据表的相关内容表现在Java文件的实例上:即成员变量和set、get成员方法
3、new一个测试Java文件的Test.Java文件
4、安装MyBatis插件
能够较为方便地查看SQL映射文件下的statement对应的核心配置文件地位置
查询操作
1、编写接口方法:定义一个名称为:(BrandMapper)的接口
同之前操作相同,同时需要new一个.xml文件,与接口同名
2、编写SQL依语句,执行方法:写一个测试用例
步骤:
1、获取SqlSessionFactory对象
2、获取SqlSession对象
3、获取Mapper接口的代理对象
4、执行方法
5、释放资源
查询所有:select * from 表名;
若是实体类属性名和数据库表列名不一致,不能自动封装数据
1、起别名
2、resultMap
查询部分:
1、 select 相应列名(可以使用起类型别名的方法进行查询)from 表名;----每次查询都要定义一次别名
2、使用
再在select里面引用
3、使用
并将select中的resultType更改为:resultMap="",中间放置id名称
查询--查看详情
举例:----参数占位符:#{} ${}
在查询所有的基础上,后面添加一个where id=#{id};
#{}:会将其替换为?,为了防止SQL注入---------使用时机:参数传递的时候
${}:会存在SQL注入的问题----------使用时机:表明或者列名不固定的情况下
参数类型:
parameterType:可以省略---用来设置参数类型
特殊字符处理:
1、转义字符---适用于特殊字符较少时
2、CDATA区---适用于特殊字符较多时(CD-->回车-->在其中填入特殊字符即可)
查询--条件查询
多条件查询
where 条件 and 条件 and 条件
三种方式接受参数:
使用=表示准确查询,而使用like,则表示模糊查询
1、散装参数
模糊查询,需要在参数两端加上对应的%,实现模糊查询;
2、对象参数
需要用set方法封装对象,举例:
Brand brand=new Brand();
brand.setStatus("status");
brand.setCompanyName("companyName");
brand.setBrandName("brandName");
3、map集合
需要用到HashMap封装对象,举例:
Map map=new HashMap();
map.put("status");
map.put("companyName");
map.put("brandName");
查询--多条件--动态条件查询
是对多条件查询的优化,实现了不一定要输入全部条件时才能查询到相关信息的功能,提高了查询的灵活性;
where
若是定义的第一个条件存在,可以实现该动态查询
但是,若是定义的第一个条件不存在,where后面会直接显示and连接符,查询出现漏洞;
解决方法:
1、恒等式:在第一个if选择之前加上一个恒等式,将之前定义的第一个if语句前面加上and连接符,即可解决!
2、用
单条件---动态条件查询
在
where后面添加一个
但存在特殊情况,若是用户并未选择标签,直接选择查询,会直接报错!这个问题需要解决!
解决方法:
恒等式:
在