數據庫的表的字段名稱與實體類(pojo)不對應解決方案
數據庫表
不對應的時候我們查表
-
創建一個接口,定義一個方法查詢所有用戶
-
-
在對應的Mapper配置文件中配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.lin.Dao.UserMapper"> <!-- <resultMap id="user" type="com.lin.pojo.User">--> <!-- <result column="pswd" property="psw"></result>--> <!-- </resultMap>--> <!-- <select id="getuser" parameterType="_int" resultMap="user">--> <!-- select * from mybatis.user where id= #{id}--> <!-- </select>--> <select id="getAllUser" resultType="com.lin.pojo.User" > select *from user </select> </mapper>
-
測試
@Test public void test1(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> user = mapper.getAllUser(); for (User i : user) { System.out.println(i); }
-
輸出結果
User{id=1, name='hsay', psw='null'}
User{id=2, name='哈哈哈', psw='null'}
User{id=3, name='林正明3', psw='null'}
User{id=4, name='哈哈哈', psw='null'}發現未查到psw,原因就是數據庫的字段名稱與實體類屬性不對應獲取不到值
解決方案
1.resultmap
在xml配置中配置resultmap
<resultMap id="user" type="com.lin.pojo.User"> <result column="pswd" property="psw"></result> </resultMap>
column是表的字段名也就是列名稱 property是實體的屬性 他倆形成映射關系
<select id="getAllUser" resultMap="user" > select *from user </select>
查查詢結果
User{id=1, name='hsay', psw='1222'}
User{id=2, name='哈哈哈', psw='123abc'}
User{id=3, name='林正明3', psw='12345'}
User{id=4, name='哈哈哈', psw='123abc'}2.起別名
在編寫sql命令中使用起別名的方法將表中的字段名稱起一個名字與實體類的屬性相同,這樣就能把表中的數據映射到實體類中
<select id="getAllUser" resultType="com.lin.pojo.User" > select id,name,pswd as psw from user </select>
查詢結果
User{id=1, name='hsay', psw='1222'}
User{id=2, name='哈哈哈', psw='123abc'}
User{id=3, name='林正明3', psw='12345'}
User{id=4, name='哈哈哈', psw='123abc'}