本帖最后由 吴洪标 于 2019-3-11 12:00 编辑
今天要大家掌握的是Mybatis的crud操作,dao实现类的crud操作和配置文件的注意事项。大家把自己觉得重要的内容整理跟帖。 1.实体类的属性名和数据库中对应表中的列名尽量保持一致,这样可以省却额外的麻烦和可能的错误。如果不一致,则需要在主配置文件SqlMapConfig.xml中配置<resultMap>标签,将其一一对应。 2.使用<properties>标签加载sql配置信息时,要将<dataSource>标签下的<property>的value属性设置成${jdbc:***}格式,这样{}内的参数会从sql配置文件中找到对应的。 3. 使用<typeAliases>配置别名,只能配置domain中类的别名。<package name="com.itheima.domain"></package>这样配置之后,domain包下的所有类都配置了别名,别名就是类名,并且忽略大小写。 4.配置别名后,当且仅当dao目录下的所有dao接口中只存在一个方法名为***(如findTotal)则可以如下调用:session.selectList("findTotal"),即参数statement可以只写方法名(即id)。 5.在<insert>标签中插入<selectKey>标签,标签体中的sql语句为“selectlast_insert_id()”,则可以在插入语句执行之后返回刚插入那条记录的id,并且给对应对象的id属性赋值。 6.占位符#{}只能在sql语句中使用,它将传入的数据都当成一个字符串,会对自动传入的数据加一个引号,因此需要在模糊查询传入参数时传入%号,如%王%解析为’%王%’。 而${}的应用范围更广。在sql语句中它将传入的数据直接显示生成在sql中。如:order by ${user_id},如果传入的值是111,那么解析成sql时的值为order by 111, 如果传入的值是id,则解析成的sql为order by id. #{}方式可以防止sql注入,而${}方式无法防止sql注入,因此一般情况在sql语句中尽量选择用#{}方式。
|