mybatis

Mapped Statements collection already contains value for。。。错误提示方法ID重复,
可能是同时使用了xml和注解方法占用了同一个ID

想要链接获取方法在查询等之前执行,需要加@Before注解
断开连接等需要在最后执行的方法需要加@Arter注解

添加数据时需要提交事务才能将数据放入数据库,否则会回滚导致添加失败,
所以需要在destory方法中先提交事务 sqlSession.commit();

xml文件中语句id必须要和dao接口中方法名称相同,不然会报错

xml文件中只支持<!--   -->这种注释,其他的方式注释并不会被采用,其它方式注释后仍会影响程序运行

在数据库主配置文件中,如果mapper 使用注解配置
 <mapper class="com.zhonghuan.dao.UserDao"></mapper>,
 格式为class=“ 中间用.隔开”
 <mapper resource="com/zhonghuan/dao/UserDao.xml"></mapper>
格式为resource=“中间用/隔开”	

MySQL数据库在Windows中不区分大小写,
查询时数据库中的列名和结果的对象某个属性大小写不同时,可以查询并返回成功
数据库中的username列,查询时返回的User对象中的userName属性,可以查询并返回成功
linux系统中严格区分大小写

当数据库列名和Javabean对象属性名相同时,可以直接查询,
mybatis会直接将数据库中查询到的内容封装到相同名称的Javabean对象的属性中,
当数据库列名和javabean对象属性名不同时,要通过dao.的xml文件mapper标签中进行配置,使列名和对象属性一一对应,执行语句时不用对象的全限定类名而用resulmap标签的Id进行配置
    <resultMap id="Usermap" type="com.zhonghuan.domain.User">
        <!--配置主键-->
        <id property="userId" column="id"></id>
        <!--配置User中其他属性-->
        <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>

typeAliases标签:用于取别名,取别名后别名不分大小写
<typeAliases>
        指定后为包中的实体类注册别名,类名就是别名。
        引用的时候不再区分大小写
        <package name="com.zhonghuan.domain"></package>
 </typeAliases>

使用单独的properties文件配置jdbc
在environments标签外通过properties标签获得配置文件路径
 <properties resource="jdbcConfig.properties"></properties>
 在property标签中通过${}获取值
 <dataSource type="POOLED">
            <!-- 配置连接数据库的4个基本信息 -->
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
  </dataSource>

主配置文件中的Mappers标签 ,用于指定dao接口所在的包,使用package标签指到dao接口所在包后不再需要写Mapper标签指定具体路径,

     <mappers>
        <!--<mapper class="com.zhonghuan.dao.UserDao"></mapper>-->
        <!--<mapper resource="com/zhonghuan/dao/UserDao.xml"></mapper>-->
    	<package name="com.zhonghuan.dao"></package>
    </mappers>

 在xml文件中写的SQL语句换行的时候一定要加个空格,
 或在上一行末尾或在第二行开头,
 否则执行语句进行拼接的时候可能会忽略换行符导致SQL错误

一级缓存
一级缓存是 SqlSession 级别的缓存,一级缓存与SQLsession共存亡,只要 SqlSession 没有 flush 或 close,它就存在。
关闭sqlsession或者调用sqlSession.clearCache();方法就会清空一级缓存
一级缓存是 SqlSession 范围的缓存,当调用 SqlSession 的修改,添加,删除,commit(),close()等方法时,就会清空一级缓存。


二级缓存
开启步骤
1.在主配置文件中配置
2.在类的配置文件中配置


3.在语句中配置
将 UserDao.xml 映射文件中的标签中设置useCache=”true”
代表当前这个 statement 要使用二级缓存,如果不使用二级缓存可以设置为 false。

二级缓存存储的数据,再次查询时再将数据封装为对象,所以使用二级缓存虽然只执行一次语句但是创建了两个对象






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值