我与mybatis的痛苦回忆

1.mybatis入门

1.1先看官网学习

1.2导包

mybatis 的核心包、依赖包、数据库驱动包、日志包

1.3配置

核心配置文件 mybatis-config.xml

<configuration>
    <!--导入-->
    <properties  resource="jdbc.properties" />
    <!-- 别名-->
    <typeAliases>
        <!-- <typeAlias type="cn.itsource.model.Product" alias="Product"></typeAlias>-->
        <package name="cn.itsource.model" ></package>
        <package name="cn.itsource.vo" ></package>
    </typeAliases>
    <!--环境-->
    <environments default="development">
    
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="cn/itsource/model/ProductMapper.xml"/>
    </mappers>
</configuration>

1.4准备数据库表格

1.5准备相应的domain(product)

创建一个Product对象,和数据库的表对应
环境 DataSource 数据源-连接池 - 复用session会话,不写死,properties
sql.xml -> sql 语句
namespace 命名空间 + 标签名 select update delete insert
找到执行的sql

1.6测试

核心Api
1,读取配置
resources.getAsreaner(“mybatis-config.xml”)
2. 创建sqlsessionfactoty
sqlsessionfactotyBuider.build()
3,获取sqlsession
factory.opensession();
4.sqlsession 操作我们的数据库
selectone (命名空间 + 标签名 , 参数)、
selectList
insert
delete
update
5.关闭sqlsession

2 .细节

2.1 别名

<!-- 别名-->
    <typeAliases>
    <!-- <typeAlias type="cn.itsource.model.Product" alias="Product"></typeAlias>-->
        <package name="cn.itsource.model" ></package>
        <package name="cn.itsource.vo" ></package>
    </typeAliases>

2.2. 保存后返回主键id

<!--  useGeneratedKeys 是否自增  keyColumn  数据库id  keyProperty 实体类属性id-->

2.3批量操作

    <foreach collection="list" item="item" separator=",">
               (
               #{item.productName},
               #{item.dir_id},
               #{item.salePrice},
               #{item.supplier},
               #{item.brand},
               #{item.cutoff},
               #{item.costPrice}
   ​            )
   ​        </foreach>

2.4动态标签

   <if  test="name!-null and  name!=''">  如果需要拼接sql 
   解决数据更新和高级查询
​   <where>
​   解决and
​   <set>
​   解决逗号

3.常见的错误

1 没有导入数据库的驱动包
2 在XML中很多都是字符串,细心,不要写错
3 在映射文件中全限定名可能会写错
4 找不到相应的Statement(sql语句)

找SQL的Statement写错了
核心XML中没有找相应的映射文件

5 在我们调用Statement(sql语句的时候),经常会忘记传参
6 执行成功后,数据库却没有反映,很有可能是没有提交事务
7 可能我们忘了写执行的代码了
8 错误一定要打印出来(执行的时候没效果,但是又不报错)
9 Mapper中就算一个语句没有使用,它的错也可能会影响到其它正确的语句
10 框架的错往往从后向前找
11 很多同学没有取别名,但是他一直去用(老师你的代码就是这样的啊)
12 字符编码:useUnicode=true&characterEncoding=UTF-8

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值