接上一篇博客继续写
我们在配置mysql连接时,连接的数据库不同,所配置的路径也不同。在企业应用开发中,数据库环境是需要划分为测试环境和生产环境。而我们的mybatis-config相当于是生产环境,如果我们每换一个数据库都改动自己的生产环境的话,这是不合理的,所以我们需要在外部导入配置文件,在我们的mysql-config配置文件中导入外部文件,并将原先的配置内容改为占位符的形式。
具体操作如下:
创建mysql.properties文件,将我们连接所需要的配置写入文件中
在原来的mybatis-config配置文件中将原先的配置内容改为占位符的格式,并导入我们刚刚所写的外部配置文件(注意:外部配置文件优先级高于内部配置文件)
同时这边还有一个知识点typeAliases:别名处理器
该标签主要是为了避免冗长的文件名,具体内容如下:
在mybatis-config配置文件中加入该标签
设置完后我们在mapper映射文件中就可以由原来的com.zb.entity.UserInfo转变为下面的UserInfo
实战演练:
1.单条件模糊查询
在我们的接口类中添加如下方法
接着在对应的mapper映射文件中写查询语句
写完查询语句后,我们创建一个测试类,基于接口调用方法,完成单个条件查询
2.多条件模糊查询
多条件模糊查询时,parameterType属性并不能代表多个参数的类型,所以我们将以如下三种解决方案解决
首先第一种就是加@param注解
在我们的接口类中写方法
然后在我们的对应的mapper映射文件中写方法对应的查询语句
最后创建测试类,进行测试
第二种解决方案 就是将我们所要查询的条件放到map集合中,以map集合作为参数
第一步还是在我们的接口类中定义方法
接着在我们的mapper映射文件中写对应的查询语句,语句内容与第一种方法的内容一样
最后创建测试类,在测试类中创建map对象,添加你想要查询的条件,完成测试
第三种解决方案就是将我们所要查询的条件封装到一个类中,然后我们方法的参数为对应的类
同样的道理,在我们的mapper映射文件中写查询语句,语句仍和第一条语句一样
最后创建测试类, 因为我们所要查询的参数在我们所封装的对象中,所以为了更方便的填写我们的条件,最好在我们的类中添加构造方法
以上就是多条件查询的三种解决方案
3.多表查询
在我们所连接的数据库中创建一张房屋表,并与之前的用户表形成主外键关系
这边需要理解是:一个用户对应一个房子或多个房子,而一个房子只能对应一个用户
理解完之后我们回到idea
看house表可发现,house表中的public为java代码的关键字,我们在创建房屋的实体类写public属性显然会报错,可是如果不写,那我们这个实体类与这张house表就不能够一一对应了,这也不符合我们mapper映射文件中自动映射的理念,在我们第一篇博客中写道:mybatis框架为半自动化的ORM框架。简单地概括为可手动,也可自动。
所以我们这时就需要将mapper映射文件的自动映射,变为手动映射。
这边首先创建实体类 其中房屋表中的userid对应的是UserInfo对象,一个房子对应一个用户,所以我们把House表中的userid换成我们的用户对象
接着我们创建一个house的接口
基于接口我们创建一个HouseMapper映射文件,作为接口的实现类,并完成手动映射以及你想要查询的sql语句
这边要特别注意,创建mapper映射文件后一定要在mybatis-config配置文件中注册映射文件,否则,配置中不包含该映射文件,将无法完成测试
最后创建测试类进行测试 可以发现,多个房子对应一个用户 这是association的用法
好,讲完多对一的关系,接下来我们来讲一对多的关系,一个用户可以对应多个房子
添加完之后我们在对应的接口中添加对应的方法
添加完之后到对应的映射文件中实现方法
最后创建测试类 可以看到一个用户对应多个房子,一个用户对应一个房子,这就是collection的用法
到这边的案例基本讲完,如有错误的地方,希望各位大神能够指点指点!!!