MySQL使用


记录MySQL使用过程中的问题以及解决方法

Mysql的varchar的排序

有时候需要对varchar类型进行排序,则会失效,因为没有对varchar类型进行排序的操作,需要进行类型的转换即转换为int类型如下:

1
2
3
4
5
6
SELECT
*
FROM
table

ORDER BY (code+0) DESC

也可以使用Mysql的类型转换函数:CAST、CONVERT,函数可用来获取一个类型的值,并产生另一个类型的值。

1
2
3
4
5
6
7
8
9
CAST(value as type);  
CONVERT(value, type);

SELECT
*
FROM
table

CONVERT (code, SIGNED) DESC

这两函数的转换的类型是有限制的,可以使用以下值的其中一个

1
2
3
4
5
6
7
8
二进制,同带binary前缀的效果 : BINARY    
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED

mybatis中传入String类型参数的问题

按照名称去查询,传入的是一个String类型的参数,查询的时候回出现错误

1
There is no getter for property named 'name' in 'class java.lang.String'。

原始的代码展示:

Dao层为

1
2
3
4
5
6
 /**
* 根据名称查询
* @param name
* @return
*/
String getName(String name);

Xml层

1
2
3
4
5
6
<select id="getName"  resultType="String">
SELECT
*
FROM table a
where a.name = #{name}
</select>

错误原因:MyBatis不能解析String类型的参数,
解决的方法:在Dao层中给方法的参数添加@Param注解
修改后的Dao层

1
2
3
4
5
6
/**
* 根据名称查询
* @param name
* @return
*/
String getName(@Param("name")String name);

注意的是@Param(“name”)的参数必须和xml的参数要一致

-------------本文结束感谢您的阅读-------------