mybatis-config.xml的作用
三项配置虽然都有注释,但是还是看不懂,或者更准确的说不知道这个配置文件在哪里起了作用
正在回答
同学你好。十分抱歉,这里讲解的不够准确,使同学对产生了些误解。
在xml中的settings元素中设置useGeneratedKeys是一个全局参数,但是只会对接口映射器产生影响,对xml映射器不起效。
1、在MyBatis中,允许设置名称为“useGeneratedKeys”参数存在3个位置:
1)在settings元素中设置useGeneratedKeys参数
2)在xml映射器中设置useGeneratedKeys参数
3)在接口映射器中设置useGeneratedKeys参数
2、接口映射的例子:
public interface TestMapper { // 受全局useGeneratedKeys参数控制,添加记录之后将返回主键id @Insert("insert into test(name,descr,url,create_time,update_time) values(#{name},#{descr},#{url},now(),now())") Integer insertOneTest(Test test); }
但如果在接口映射器中又明确设置了useGeneratedKeys参数,那么注解映射器中的useGeneratedKeys参数值将覆盖settings元素中设置的全局useGeneratedKeys参数值。
3、xml映射器中配置的useGeneratedKeys参数只会对xml映射器产生影响,且在settings元素中设置的全局useGeneratedKeys参数值对于xml映射器不产生任何作用。
所以想要表示的是,无论何种方式,对于支持自动生成记录主键的数据库,如:MySQL,SQL Server,设置useGeneratedKeys参数值为true,在执行添加记录之后可以获取到数据库自动生成的主键ID。
祝学习愉快~
同学你好。
1、<setting name="useGeneratedKeys" value="true" />是使用jdbc的getGeneratedKeys获取数据库自增主键值,有了这个以后,在Dao.xml中新增时,就可以自动的将自增的主键填入到传入的参数对象中。例如:调用了shopDao.insertShop(shop)后,这个shop对象中就会有mysql生成的自增主键值了。
2、<setting name="useColumnLabel" value="true" />和<setting name="mapUnderscoreToCamelCase" value="true" />分别是使用列标签替换列别名,和开启驼峰命名转换:Table{create_time} -> Entity{createTime}
有了他们,就可以在Dao.xml直接使用对应的列名的驼峰命名形式来命名实体类的属性。还是以上面截图为例。列名是create_time,实体类中的属性名为createTime,在Dao.xml中使用实体类的属性名,mysql会自动对应create_time列。
如果解答了同学的疑问,望采纳~
祝学习愉快~
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星