xml文件配置如下,sql语句放在数据库界面端可以完美运行,
并且如果在配置语句里,把占位符替换为
WHERE bd.building_name='实际数据'
把占位符换成#{}也没有用
程序便能执行成功,第一次用Mybatis和Mysql,实在不明白,求解答
<select id="getBuildingByBuildingName" parameterType="String" resultType="buildingInfo" statementType="STATEMENT">
SELECT
bd.building_name AS buildingName,
bd.building_addr AS buildingAddr,
bd.completion_date AS completionDate,
bd.building_storey AS buildingStorey,
bd.building_function AS buildingFunction,
bd.gross_floor_area AS grossFloorArea,
bd.heating_area AS heatingArea,
bd.aircon_form AS airconForm,
bd.structure_form AS structureForm,
bd.outer_wallform AS outerWallForm,
bd.outer_window_form AS outerWindowForm,
bd.glass_type AS glassType,
bd.building_type AS buildingType,
bd.aircon_area AS airconArea,
bd.heating_form AS heatingForm,
bd.outer_wallheat AS outerWallHeat,
bd.frame_material AS frameMaterial
FROM BUILDING_INFO bd
WHERE bd.building_name=#{building}
</select>
Dao层
/**
* 根据主键 建筑名 获取该建筑对象
* @param building_name String-建筑名
* @return BuildingInfoDataBean:建筑对象<br/>null:没有查询到
*/
public BuildingInfoDataBean getBuildingByBuildingName(String building);
异常
Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 20
### The error may exist in com/xayr/salary/mapper/BuildingInfoMapper.xml
### The error may involve com.xayr.salary.dao.BuildingInfoDao.getBuildingByBuildingName
### The error occurred while executing a query
### SQL: SELECT bd.building_name AS buildingName, bd.building_addr AS buildingAddr, bd.completion_date AS completionDate, bd.building_storey AS buildingStorey, bd.building_function AS buildingFunction, bd.gross_floor_area AS grossFloorArea, bd.heating_area AS heatingArea, bd.aircon_form AS airconForm, bd.structure_form AS structureForm, bd.outer_wallform AS outerWallForm, bd.outer_window_form AS outerWindowForm, bd.glass_type AS glassType, bd.building_type AS buildingType, bd.aircon_area AS airconArea, bd.heating_form AS heatingForm, bd.outer_wallheat AS outerWallHeat, bd.frame_material AS frameMaterial FROM BUILDING_INFO bd WHERE bd.building_name=?
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 20
]
[2016/08/06 14:08:21,548] [DEBUG] [com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor:84] - Error calling method through OGNL: object: [com.xayr.salary.action.BuildingInfoAction@45d5de28] method: [execute] args: [[]]
org.springframework.jdbc.BadSqlGrammarException:
### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 20
### The error may exist in com/xayr/salary/mapper/BuildingInfoMapper.xml