目录:
Mybatis逆向工程(了解)
参考第一天内容。使用#{}占位符,或者${}进行sql拼接。
参考第一天的内容。Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称。
开发中通过可以使用pojo传递查询条件。
查询条件可能是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件(比如查询用户信息的时候,将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数。
包装对象:Pojo类中的一个属性是另外一个pojo。
需求:根据用户名模糊查询用户信息,查询条件放到QueryVo的user属性中。
1)编写QueryVo
2)Mapper.xml文件
3)Mapper接口
4)测试方法
需求:查询用户表数据条数
1)Mapper.xml文件
2)Mapper接口
3).测试方法
resultType可以指定将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。
如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中。
resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。
需求:查询订单表order的所有数据
创建OrderMapper.xml配置文件,如下:
通过mybatis提供的各种标签方法实现动态拼接sql。
需求:根据性别和名字查询用户
UserMapper.xml配置sql,如下:
编写Mapper接口,如下图:
Sql中可将重复的sql提取出来,使用时用include引用即可,最终达到sql重用的目的。
把上面例子中的id, username, birthday, sex, address提取出来,作为sql片段,如下:
如果要使用别的Mapper.xml配置的sql片段,可以在refid前面加上对应的Mapper.xml的namespace
向sql传递数组或List,mybatis使用foreach解析,如下:
根据多个id查询用户信息
需求:查询所有订单信息,关联查询下单用户信息。
注意:因为一个订单信息只会是一个人下的订单,所以从查询订单信息出发关联查询用户信息为一对一查询。如果从用户信息出发查询用户下的订单信息则为一对多查询,因为一个用户可以下多个订单。
使用resultMap,定义专门的resultMap用于映射一对一查询结果。
4.2.1.1. 改造pojo类
在Order类中加入User属性,user属性中用于存储关联查询的用户信息,因为订单关联查询用户是一对一关系,所以这里使用单个User对象存储关联查询的用户信息。
改造Order如下图:
4.2.1.2. Mapper.xml
这里resultMap指定orderUserResultMap,如下:
4.2.1.3. Mapper接口
编写UserMapper如下图:
4.2.1.4测试方法
案例:查询所有用户信息及用户关联的订单信息。
用户信息和订单信息为一对多关系。
5.3.3.1. SqlMapConfig.xml
5.3.3.2. applicationContext.xml
SqlSessionFactoryBean属于mybatis-spring这个jar包
对于spring来说,mybatis是另外一个架构,需要整合jar包。
在项目中加入mybatis-spring-1.2.2.jar的源码,如下图
applicationContext.xml,配置内容如下
5.3.3.3. db.properties
5.3.3.4. log4j.properties
5.3.3.5. 效果:
加入的配置文件最终效果如下:
两种dao的实现方式:
需求:
原始的DAO开发接口+实现类来完成。
需要dao实现类需要继承SqlsessionDaoSupport类
5.4.2.2. 加载Mapper.xml
在SqlMapConfig如下图进行配置:
5.4.2.3. 实现UserDao接口
5.4.2.4. 实现UserDaoImpl实现类
编写DAO实现类,实现类必须集成SqlSessionDaoSupport
SqlSessionDaoSupport提供getSqlSession()方法来获取SqlSession
5.4.2.5. 配置dao
把dao实现类配置到spring容器中,如下图
5.4.3.1. 实现Mapper.xml
编写UserMapper.xml配置文件,如下:
5.4.3.2. 实现UserMapper接口
5.4.3.3. 方式一:配置mapper代理
在applicationContext.xml添加配置
MapperFactoryBean也是属于mybatis-spring整合包
测试方法:
5.4.3.5. 方式二:扫描包形式配置mapper
每个mapper代理对象的id就是类名,首字母小写
6. Mybatis逆向工程。。。。。。。。。。。。。。。。。。。。