1、概念
持久层的框架,
2、快速入门
(1)添加MyBatis的坐标
< dependency>
< groupId> org.mybatis</ groupId>
< artifactId> mybatis</ artifactId>
< version> ${mybatis}</ version>
</ dependency>
< dependency>
< groupId> org.mybatis</ groupId>
< artifactId> mybatis-spring</ artifactId>
< version> ${mybatis-spring}</ version>
</ dependency>
(2)创建user数据表和实体类
(3)编写映射文件UserMapper.xml
< mapper namespace = " com.qf.ssm.mapper.RoleMapper" >
< insert id = " insert" >
insert into sys_role (roleName, password, phone)values (#{role.roleName},# {role.password},#{role.phone})
</ insert>
</ mapper>
(4)连接池:url、username、password
< property name = " url" value = " jdbc:mysql://localhost:3306/db1?serverTimezone=UTC" />
< property name = " username" value = " root" />
< property name = " password" value = " root" />
< property name = " maxActive" value = " 20" />
(5)编写核心文件Spring-mybits.xml
< bean>
< property name = " mapperLocations" value = " classpath:/mapper/**/*.xml" />
< property name = " dataSource" ref = " dataSource" />
</ bean>
< bean class = " org.mybatis.spring.mapper.MapperScannerConfigurer" >
< property name = " sqlSessionFactoryBeanName" value = " sqlSessionFactory" />
< property name = " basePackage" value = " com.qf.ssm.mapper" />
</ bean>
3、增删改查操作:标签属性 id—>对应接口的方法 resultMap–>对应自己封装的resultMap的id
顶级标签:insert、update、delete、select、resultMap
resultMap标签三个属性:id作为唯一标识,供增删改查操作返回结果集resultMap= ”id的值“
type:映射的类型,entity
extends :可以继承其他的resultMap
其他:cache、cache- ref、sql
属性 说明 parameterType 传参限定类名或别名(不推荐使用),使用@Param来传参 useGeneratedKeys insert、update使用,取出数据库生成的主键。默认值:false keyProperty 赋值主键值的字段
(1)查询单个对象
< resultMap id = " BaseUserResultMap" type = " User" >
< id property = " uid" column = " uid" />
< result property = " username" column = " username" />
< result property = " password" column = " password" />
< result property = " phone" column = " phone" />
</ resultMap>
< select id = " selectUserById" resultMap = " BaseUserResultMap" >
SELECT u.uid, u.username, u.password, u.phone, u.state, u.create_date
from t_user u
WHERE u.uid=#{uid}
</ select>
(2)分页查询
id为接口对应分页查询的方法,resultMap结果集和单个查询一样
< select id = " selectUserByPage" resultMap = " BaseUserResultMap" >
</ select>
(3)一对一:主表、从表–>一般用主表的主键(id)作为从表的外键唯一约束(uid)
< resultMap id = " BaseUserDetailMap" type = " UserDetail" >
< id property = " dId" column = " d_id" />
< result property = " email" column = " email" />
< result property = " address" column = " address" />
< result property = " uid" column = " uid" />
< result property = " state" column = " state" />
</ resultMap>
< resultMap id = " UserDetailResultMap" type = " User" extends = " BaseUserResultMap" >
< association property = " userDetail" resultMap = " BaseUserDetailMap" />
</ resultMap>
(4)一对多:一个用户有多个订单,一个订单有多个商品,一级菜单有多个二级菜单,这些业务都是一对多查询
< resultMap id = " OrderMap" type = " Order" >
< id property = " orderId" column = " order_id" />
< result property = " orderNo" column = " order_no" />
< result property = " msg" column = " msg" />
< result property = " uid" column = " uid" />
< result property = " status" column = " status" />
</ resultMap>
< resultMap id = " UserOrderMap" type = " User" >
< id property = " uid" column = " uid" />
< result property = " username" column = " username" />
< result property = " password" column = " password" />
< result property = " phone" column = " phone" />
< collection property = " order" resultMap = " OrderMap" />
</ resultMap>