记:以前咱们规定 编写实体类的时候, 属性和数据库列名 必须保持 一致。java
思考:二开、业务变化等等的时候,此时数据库中的列名和实体类的属性名就是不一致,怎么解决?mysql
实体类属性和数据库列名不一致,以下图所示:linux
提示:这里只演示改操做。sql
记:在修改配置文件 IUserDao.xml 后,增删改操做基本能够知足开发须要。数据库
------windows
新建实体类:UserV2.javadom
代码以下:测试
------spa
public class UserV2 { private int userId; private String userName; private Date userBirthday; private String userSex; private String userAddress; ...
------3d
接口:IUserDao.java,新增 updateUserV2 方法
代码以下:
-------
/** * 用户修改v2 * @param userv2 */ void updateUserV2(UserV2 userv2);
-------
配置文件: IUserDao.xml ,代码以下:
-------
<!--更新用户操做V2--> <update id="updateUser" parameterType="com.abc2.domain.UserV2"> UPDATE USER SET \`username\`=#{userName},\`address\`=#{userAddress},\`sex\`=#{userSex},\`birthday\`=#{userBirthday} WHERE id=#{userId}; </update>
测试文件,代码以下:
@Test public void updateUserV2Test() { UserV2 user = new UserV2(); user.setUserId(70); user.setUsername("小明"); user.setUserAddress("外星球-月球22"); user.setUserSex("女"); user.setUserBirthday(new Date()); //更新用户 userDao.updateUserV2(user); //执行提交 sqlSession.commit(); }
结果以下,修改为功!
总结:
通常来讲,增删改的方法,就算实体属性和数据库列名不一致,经过配置后,也能够正常运行。
可是,在查询的时候,若是不一致,就会出异常!
查询的时候,列名没法对齐,致使数据出现异常。
接口:IUserDao.java
/** * 查询全部数据V2 * @return **/ List<UserV2> findAllV2();
配置文件:IUserDao.xml
<!--配置查询全部 指定id,resultType结果集类型 --> <select id="findAllV2" resultType="com.abc2.domain.UserV2"> select \* from user </select>
测试类:Test
@Test public void findAllV2Test() { List<UserV2> allV2 = userDao.findAllV2(); System.out.println("-------"); for (UserV2 item : allV2) { System.out.println(item); } System.out.println("-------"); }
运行结果,以下图所示:
提示:mysql数据库在windows系统下不区分大小写。若是是linux系统下,是严格区分大小写的。
解决方案:
修改配置文件:IUserDao.xml
<!--配置:查询结果的列名和实体类的属性名对应关系--> <resultMap id="userMap2" type="com.abc2.domain.UserV2"\> <!--主键字段的对应--> <id property="userId" column="id"></id> <!--非主键字段对应--> <result property="userName" column="username"></result> <result property="userBirthday" column="birthday"></result> <result property="userSex" column="sex"></result> <result property="userAddress" column="address"></result> </resultMap> <!--配置查询全部 指定id,resultType结果集类型 --> <select id="findAllV2" resultMap\="userMap2"> <!-- 使用查询别名-了解便可! --> <!-- select id as userId,username as userName,birthday as userBirthday,sex as userSex,address as userAddress from user;--> select \* from user; </select>
测试类:Test
@Test public void findAllV2Test() { List<UserV2> allV2 = userDao.findAllV2(); System.out.println("-------"); for (UserV2 item : allV2) { System.out.println(item); } System.out.println("-------"); }
查询结果以下:
欢迎你们来评论!