cpa广告联盟,seo代运营,泰安房价走势图,中英文网站源码1、起别名
在MyBatis中#xff0c;typeAliases元素用于定义类型别名#xff0c;它可以将Java类名映射为一个更简短的别名#xff0c;这样在映射文件中可以直接使用别名而不需要完整的类名。
下面是一个示例#xff1a;
在mybatis核心配置文件中配置typeAliases标…1、起别名
在MyBatis中typeAliases元素用于定义类型别名它可以将Java类名映射为一个更简短的别名这样在映射文件中可以直接使用别名而不需要完整的类名。
下面是一个示例
在mybatis核心配置文件中配置typeAliases标签
typeAliasestypeAlias aliasAcount typeduhong.entity.Account/
/typeAliases
为duhong.entity.Account类指定了别名Account。
定义了这些别名后我们可以在映射文件中直接使用这些别名来引用对应的Java类例如
resultMap idAccountMap typeAccount
通过使用别名我们可以简化映射文件中的配置并提高代码可读性和可维护性。
2、mybatis核心配置文件加载映射文件的其他方式
package nameduhong.dao/
这种声明方式会使mybatis查找duhong/dao下对应的xml文件,不过这种方式要求xml资源目录与dao层目录一致而且xml名称要与mapper接口名称一致。
3、#{}与${}的区别
在MyBatis中#{} 和 ${} 用于处理SQL语句中的参数但是它们在作用和安全性方面有所不同。
#{} 语法: 在MyBatis中当你使用 #{} 来表示一个参数占位符时MyBatis会在运行时将其替换为一个参数的值并且会使用预处理语句PreparedStatement来处理参数。也就是说不管参数值是什么它都会被视为一个字符串值并且正确地转义。
SELECT * FROM some_table WHERE id #{id}
${} 语法: 与 #{} 不同当你使用 ${} 时MyBatis会直接将这个位置替换为变量的字面值。也就是说如果你的变量中包含了特定的SQL关键词或结构它将不做任何转义直接嵌入SQL语句中。
SELECT * FROM ${tableName} WHERE column #{value}测试
dao层添加接口
//查询所有按降序排列
ListAccount selectAllByDesc(String key);
mapper中添加查询语句
resultMap idAccountMap typeduhong.entity.Account
id propertyid columnid/id
result propertyaccountNumber columnaccount_number/result
result propertyaccountType columnaccount_type/result
result propertybalance columnbalance/result
/resultMap
select idselectAllByDesc resultMapAccountMapselect * from account ORDER BY balance ${order};
/select
添加junit测试
SqlSession sqlSession SqlSessionUtil.openSession();Test
public void test(){AccountDao mapper sqlSession.getMapper(AccountDao.class);ListAccount account mapper.selectAllByDesc(DESC);for (Account account1 : account) {System.out.println(account);}} 将${}换成#{}执行出错原因在于DESC是sql语句的关键字而#{}会将参数转化为字符串。 4、模糊查询
select idselectLikeAll resultMapAccountMapselect * from account where account_number like %${key}%;
/select
//模糊查询
ListAccount selectLikeAll(String key);
Test
public void likeTest(){AccountDao accountDaosqlSession.getMapper(AccountDao.class);ListAccount accounts accountDao.selectLikeAll(1);System.out.println(accounts);
} 同样直接使用#{}也会出错#{}在 中并不会被赋值 改进方式sql中使用concat拼接字符串
select idselectLikeAll resultMapAccountMapselect * from account where account_number like concat(%,#{key},%);
/select