怎么用安卓机顶盒做网站服务器,企业网站开发与设计论文,邯郸网站制,dedecms手机网站Mybatis 查询resultType使用resultMap使用单条件查询多条件查询模糊查询返回主键 动态SQLifchoosesetforeachsql片段 配置文件注解增删改查结果映射 查询
resultType使用
当数据库返回的结果集中的字段和实体类中的属性名一一对应时, resultType可以自动将结果封装到实体中 r… Mybatis 查询resultType使用resultMap使用单条件查询多条件查询模糊查询返回主键 动态SQLifchoosesetforeachsql片段 配置文件注解增删改查结果映射 查询
resultType使用
当数据库返回的结果集中的字段和实体类中的属性名一一对应时, resultType可以自动将结果封装到实体中 resultMap使用
当数据库返回的结果集中的字段和实体类中的属性名存在不对应情况时可以使用 resultMap 自定义映射关系 面试题: resultType和resultMap使用区别 单条件查询 多条件查询 模糊查询 面试题#和$的区别 #表示占位符, 相当于JDBC中的?, 底层工作的是PreparedStetement对象, SQL只编译一次, 而且没有SQL注入问题$ 表示字符串拼接, 底层工作的是Statement对象, 每次SQL都会重新编译, 而且存在SQL注入问题 返回主键
向数据库保存一个用户后, 然后在控制台记录下此用户的主键值(id) 动态SQL
在Mybatis中动态SQL是通过下面几个标签来实现的
ifchoose 用于条件判断whereset 用于格式控制foreach 用于循环遍历
if if标签用于单分支条件判断, 相当于java中的if关键字where标签作用: 当where代码块中的条件都不成立的时候, where代码块不生效当where代码块中的条件至少有一个成立的时候 在代码块之前加入一个where关键字 当代码块以and | or开头的时候,它会帮你去掉第一个and | or choose choose 用于包含多个条件when 用于编写某个条件otherwise所有的when都判断失败时进入此分支 set
set标签的作用: 在代码块之前加入一个set关键字删除掉代码块中的最后一个,set代码块中至少要有一个条件是成立 foreach foreach 循环遍历 collection“collection” 指定要遍历的集合或者数组 item“item” 指定临时变量 separator“,” 指定分隔符 open“(” 指定开始字符 close“)” 指定结束字符 collection会根据传入参数的类型不同而采用不同的值 集合—collection 数组—array 实体—实体的属性 sql片段
sql片段的作用是将代码中重复的sql提取出来达到复用的目的
定义SQL片段: sql idselectUser/sql引用SQL片段: include refidselectUser/include 配置文件
sqlMapConfig.xml 此文件中的标签有严格的顺序要求, 可以省略一部分, 但是不能乱序主要选项 properties: 引入外部的properties文件 typeAlias: 给映射文件中实体类起别名 environments: 用于配置数据库连接信息和事务管理器 mappers: 用于引入映射文件
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configuration!--引入一个properties的配置文件--properties resourcejdbc.properties /!--别名: 应用在映射文件中--typeAliases!--type 指定原始类型 alias 指定别名--!--typeAlias typecom.itheima.domain.User aliasuser /--!--指定一个包名: 只要是在这个包之下的类,都会自动产生一个别名, 规则就是类名首字母消息--package namecom.itheima.domain//typeAliases!--环境: environments 可以配置多个数据库配置default 用于指定使用哪个环境--environments defaultdevelopment!--配置开发环境--environment iddevelopment!--事务管理器--transactionManager typeJDBC/!--数据源--dataSource typePOOLEDproperty namedriver value${jdbc.driver}/property nameurl value${jdbc.url}/property nameusername value${jdbc.username}/property namepassword value${jdbc.password}//dataSource/environment!--配置测试环境--environment idtesttransactionManager typeJDBC/dataSource typePOOLEDproperty namedriver value测试驱动/property nameurl value测试数据库连接/property nameusername value测试用户名/property namepassword value测试密码//dataSource/environment/environments!--导入sql映射文件--mappers!--方式1: 直接导入映射文件(了解)--!--mapper resourcemappers/UserMapper.xml/--!--方式2: 写接口路径--!--mapper classcom.itheima.mapper.UserMapper /--!--方式3: 直接写mapper接口所在的包(保证最后Mapper接口和Mapper.xml会编译到同一个目录下,并且名字一致)--package namecom.itheima.mapper//mappers/configuration注解
使用注解书写SQL其实是对使用XML书写SQL的一种替代方式其功能基本一致。
两种方式各有优缺点, 没有谁好谁坏之分, 具体看公司选择
在一个项目中是允许xml和注解混用的,但是对于同一个方法来讲,只能使用一种形式
非动态sql,使用注解简单写 但是对于动态sql,xml就相对简单了
增删改查 结果映射