mybatis学习笔记
黑马程序员ssm框架视频教程之mybatis注解学习笔记。
软件:
IDEA+Navicat(mysql)
数据表:
常用注释增删改查SQL语句
功能 | 注释SQL常用增删改查语句 |
---|---|
查 | @Select("select *from user ") |
增 | @Insert("insert into user(username,address,sex,birthday) values {#username},#{address},#{sex},#{birthday} ") |
改 | @Update("update user set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id} ") |
删 | @Delete("delete from user where id=#{id} ") |
常用注释拓展SQL语句
功能 | 常用注释拓展SQL语句 |
---|---|
根据id查用户 | @Select("select *from user where id=#{id} ") |
模糊查询第一种 | @Select("select *from user where username like #{username} ") |
第一种注意事项 | 调用方法的时候需要把数据两端加入%,例如:%小% |
模糊查询第二种 | @Select("select *from user where username like '%${value}%' ") |
查询总用户数量 | @Select("select count(*) from user ") |
解决实体类属性和数据库表中的属性名称不相同的问题:
实体类的属性为:
userId,userName,userAddress,userSex,userBirthday
数据库表的属性为:
id,username,address,sex,birthday
解决方法:
@Results(id="userMap",value={
@Result(id=true,column="id" property="userId"),
@Result(column="username",property="userName"),
@Result(column="address",property="userAddress"),
@Result(column="sex",property="userSex"),
@Result(column="birthday",property="userBirthday"),
})
因为避免每一个注解都要重复写上面这个解决方法,我们可以使用ResultMap来调用上面的注解。
@ResultMap("userMap")
严谨注解应为:@ResultMap(value={"userMap"})
因为只有一个属性可以省略为上面的哪种形式
如图所示:
后面单纯属于笔记部分,如果具体想学可以去看视频教程,老师说的挺详细的,因为书上表达能力有限,所有存在表达不清。
mybatis注解之一对一查询:
视频教程:mybatis一对一查询
使用到了两个表,如图所示:
account表:
user表:
使用到注释:
accout表的查询注解:
@Select("select *from accout")
user表的查询注解:
@Select("select *from user)
实现根据accout的账户uid来查询user的用户信息:
使用注解:
@Results(id="accoutMap",value={
@Result(id=true,column="id",property="id"),
@Result(column="uid",property="uid"),
@Result(column="money",property="money"),
@Result(property="user",column="uid",one=@One(select="完整路径下的user表的查询方法,列如:com.example.dao.IUserDao.findById",fetchType=FetchType.EAGER))
})
解析:
fetchType的属性:
EAGER:立即加载数据
LAZY:延迟加载数据
mybatis注解之一对多查询:
视频教程:mybatis一对多查询
因为一个用户可以有多个账户:
user表的查询注解:
@Select("select *from user")
account表的更加uid查询注解
@Select("select *from account where uid=#{userId}")
实现根据user的用户id来查询accout的多个账户信息:
@Results(id="userMap",value={
@Result(id=true,column="id",property="userId"),
@Result(column="username",property="userName"),
@Result(column="address",property="userAddress"),
@Result(column="sex",property="userSex"),
@Result(column="birthday",property="userBirthday"),
@Result(property="accounts",column="id",many=@Many(select="这里使用account根据uid查询的方法例如:com.example.dao.IAccountDao.findAccountByUid",fetchType=FetchType.LAZY))
})
mybatis开启二级缓存
视频教程:开启二级缓存
配置二级缓存开启:
@CacheNamespace(blocking=true)
还在持续学习中。。。