大家对mybatis有所了解吧,今天给大家来总结mybatis的有关配置的知识,接下来让我们了解下吧。
讲到mybatis,肯定是从映射文件进行讲解
在mapper.xml文件中配置很多的SQL语句,执行每个sql语句时,封装为MappedStatement对象,mapper.xml以statement为单位管理sql语句
Statement的实际位置就等于namespace+StatementId
Mybatis中占位符,#和$有何区别呢?
在Mybatis中,有两种占位符
#{}解析传递进来的参数数据
${}对传递进来的参数原样拼接在SQL中
主键如何生成策略
如果我们在Hibernate中,当我们插入数据的时候,我们是可以选择是UUID策略
那么在Mybatis是怎么做的呢?
<insertid=”insertUser” parameterType=”con.itcast.mybatis.po.User”> <selectKey KeyProperty=”id” order=”BEFORE” resultType=”string”>select uuid()</selectKey> INSERT INTO USER(id, username, birthday, sex, address) VALUES(# { id }, # { username }, # { birthday }, # { sex }, # { address }) < /insert>
主键返回
如果我们一般插入数据的话,如果我们想要知道刚刚插入的数据的主键是多少,我们可以通过以下的方式来获取
需求:
user对象插入到数据库后,新记录的主键要通过user对象返回,通过user获取主键值。
解决思路:
通过LAST_INSERT_ID()获取刚插入记录的自增主键值,在insert语句执行后,执行select LAST_INSERT_ID()就可以获取自增主键。
mysql:
<insertid=”insertUser” parameterType=”con.itcast.mybatis.po.User”> <selectKey KeyProperty=”id” order=”BEFORE” resultType=”string”>select LAST_INSERT_ID()</selectKey> INSERT INTO USER(id, username, birthday, sex, address) VALUES(# { id }, # { username }, # { birthday }, # { sex }, # { address }) < /insert>
resultMap和resultType区别
resultType :指定输出结果的类型(pojo、简单类型、hashmap..),将sql查询结果映射为java对象 。
使用resultType注意:sql查询的列名要和resultType指定pojo的属性名相同,指定相同 属性方可映射成功,如果sql查询的列名要和resultType指定pojo的属性名全部不相同,list中无法创建pojo对象的。
resultMap:将sql查询结果映射为java对象。
如果sql查询列名和最终要映射的pojo的属性名不一致,使用resultMap将列名和pojo的属性名做一个对应关系 (列名和属性名映射配置)
resultType和resultMap用法总结
resultType:
作用:
将查询结果按照sql列名pojo属性名一致性映射到pojo中。
场合:
常见一些明细记录的展示,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中是pojo)即可。
resultMap:
使用association和collection完成一对一和一对多高级映射。
以上就是今天所讲的内容,想要了解更多java常见问答知识,请继续关注本网站。
推荐文章: