1、起别名
在MyBatis中,元素用于定义类型别名,它可以将Java类名映射为一个更简短的别名,这样在映射文件中可以直接使用别名而不需要完整的类名。
下面是一个示例:
在mybatis核心配置文件中配置typeAlia服务器托管网ses标签
为duhong.entity.Account类指定了别名Account。
定义了这些别名后,我们可以在映射文件中直接使用这些别名来引用对应的Java类,例如:
通过使用别名,我们可以简化映射文件中的配置,并提高代码可读性和可维护性。
2、mybatis核心配置文件加载映射文件的其他方式
这种声明方式,会使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} W服务器托管网HERE column = #{value}
测试:
dao层添加接口
//查询所有,按降序排列
List selectAllByDesc(String key);
mapper中添加查询语句
resultMap id="AccountMap" type="duhong.entity.Account">
select * from account ORDER BY balance ${order};
添加junit,测试
SqlSession sqlSession= SqlSessionUtil.openSession();
@Test
public void test(){
AccountDao mapper = sqlSession.getMapper(AccountDao.class);
List account = mapper.selectAllByDesc("DESC");
for (Account account1 : account) {
System.out.println(account);
}
}
将${}换成#{},执行出错,原因在于DESC是sql语句的关键字,而#{}会将参数转化为字符串。
4、模糊查询
select * from account where account_number like '%${key}%';
//模糊查询
List selectLikeAll(String key);
@Test
public void likeTest(){
AccountDao accountDao=sqlSession.getMapper(AccountDao.class);
List accounts = accountDao.selectLikeAll("1");
System.out.println(accounts);
}
同样直接使用#{}也会出错,#{}在’ ‘中并不会被赋值
改进方式sql中使用concat拼接字符串
select * from account where account_number like concat('%',#{key},'%');
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 案例106:基于微信小程序的小说实体书商城设计与实现
文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:un服务器托管网iapp 小程序开发软件:HBuild…