资讯动态

mybatis进阶使用(上)

发布时间:2026/10/17 2:47:21 来源:尧图企业网站定制
补充1.在开发中遇到数据表的字段和实体的属性名不匹配时的处理方法a.查询的时候给查询条件取别名例User selectUser(Param(userName) String name, Param(userAge) Integer age);paramxxx这个注解就是给实体属性名起的别名在对应的xml配置文件中的sql语句就可以写为SELECT * FROM USER WHERE USERNAME #{userName} AND USERAGE #{userAge}括号内就放你起的别名b.建立属性和字段的映射关系在对应的mapper映射文件(xml文件)里面进行提前映射例resultMap iduserResultMap typecom.example.User !-- 主键映射 -- id propertyid columnuser_id/ !-- 普通字段映射 -- result propertyuserName columnuser_name/ result propertyuserAge columnage/ /resultMappropertyJava 实体类的属性名column数据库表的列名id 用于主键result 用于普通字段这样配置好后就可以用这个配置名替换resultType为resultMap例select idselectUser resultMapuserResultMap SELECT user_id, user_name, age FROM user WHERE user_id #{id} /select2.开启驼峰命名自动映射如果数据库是 user_name 这种下划线风格Java 是 userName 驼峰风格可以在 MyBatis 全局配置文件mybatis-config.xml里开启自动映射settings setting namemapUnderscoreToCamelCase valuetrue/ /settings1.动态sqlwhere - if:例当有三个位置可能有参数传递时IDnameage那么xml映射文件里的对应代码就应该写为select idselectUser resultTypecom.example.User SELECT * FROM user where if testid ! null AND id #{id} /if if testname ! null and name ! AND name #{name} /if if testage ! null AND age #{age} /if /where /selectforeach:当需要查询一个数组里所有的数时可以用ListUser selectByIds(Param(ids) ListInteger ids);select idselectByIds resultTypecom.example.User SELECT * FROM user WHERE id IN foreach collectionids itemid open( close) separator, #{id} /foreach /select属性 说明 是否必需collection 要遍历的集合/数组名 必需item 每次遍历的元素别名 必需index 遍历的索引List 是下标Map 是 key 可选open 循环开始前拼接的字符串 可选close 循环结束后拼接的字符串 可选separator 每次循环之间的分隔符 可选2.在sql语句中的运算符转译的转义符为的转义符为的转义符为的转义符为

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑