Mybatis复习
Posted maplesu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis复习相关的知识,希望对你有一定的参考价值。
用mapper.xml的映射文件实现DAO的接口,需要两个配置文件,一个是核心配置xxxconf.xml和mapper.xml,得把mapper.xml的地址写进核心配置中
官方推荐使用mapper动态代理开发,即mapper里面的对象实现了接口功能
selectOne和selectList
如果返回list则调用selectList方法,如果返回单个对象则调用selectOne方法。
typeAliases(类型别名)
批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感)
mappers(映射器)配置的几种方法,基本都是要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
like ‘%${value}%‘ 模糊查询
#{}和${}
#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换。#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。
包装对象:Pojo类中的一个属性是另外一个pojo。一般叫QueryVo
动态拼接sql,用标签组合if where等
一对多查询
逆向工程注意修改以下几点:
- 修改要生成的数据库表
- pojo文件所在包路径
- Mapper所在的包路径
- 逆向工程生成的代码只能做单表查询
- 不能在生成的代码上进行扩展,因为如果数据库变更,需要重新使用逆向工程生成代码,原来编写的代码就被覆盖了。
- 一张表会生成4个文件
主键自增返回
查询id的sql
SELECT LAST_INSERT_ID()
<!-- 保存用户 -->
<insert id="saveUser" parameterType="cn.itcast.mybatis.pojo.User">
<!-- selectKey 标签实现主键返回 -->
<!-- keyColumn:主键对应的表中的哪一列 -->
<!-- keyProperty:主键对应的pojo中的哪一个属性 -->
<!-- order:设置在执行insert语句前执行查询id的sql,孩纸在执行insert语句之后执行查询id的sql -->
<!-- resultType:设置返回的id的类型 -->
<selectKey keyColumn="id" keyProperty="id" order="AFTER"
resultType="int">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO `user`
(username,birthday,sex,address) VALUES
(#{username},#{birthday},#{sex},#{address})
</insert>
以上是关于Mybatis复习的主要内容,如果未能解决你的问题,请参考以下文章