【Mybatis学习笔记02】mybatis基本使用,请求参数和返回值、properties标签、properties标签、mappers作用

本文档介绍了Mybatis的学习前提,包括如何获取插入数据后的ID。在mybatis基本使用部分,讨论了参数和返回值的设置,如parameterType与OGNL表达式,以及解决实体类与数据库字段不匹配的问题。此外,还详细解析了SqlMapConfig.xml中的properties标签用于配置数据库信息,以及mappers标签的package子标签用于简化Dao类引用。
摘要由CSDN通过智能技术生成
学习前提:mybatis实现插入数据后获取插入的ID
1.SQL查询最后一次插入数据的用户id
select LAST_INSERT_ID() 
2.mybatis实现插入数据后获取插入的ID
<!-- 保存用户 -->
<insert id="saveUser" parameterType="com.itheima.domain.User">
    <!--  配置插入后的操作,获取插入后的id数据  -->
    <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
        select LAST_INSERT_ID()
    </selectKey>
    insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
</insert>
mybatis基本使用
1.mybatis的参数和返回值

参数:
parameterType:输入类型,可以是简单对象,也可以是实体对象(POJO)
OGNL表达式: Object Graphic Navigation Language (对象 图 导航 语言)
  作用:通过对象的取值方法来获取数据。在写法上吧get和()省略了
  比如:我们获取用户的名称
  中的写法:user.getUsername();
  OGNL表达式:user.username
  mybatis能直接写username,不用写user.
  是因为在parameterType中已经指定了属性所属的类
POJO对象查询:
  嵌套对象要在OGNL表达式写 类名.参数名

返回值:
问题:封装数据的时候,实体类与数据库名称不匹配,无法自动注入
  解决1:修改实体类名称(不推荐)
  解决2:在查询的时候起别名sex as userSex (最有效)

select id as uid,name as username from user

  解决3:采用配置方式解决(resultMap )推荐

<!--  数据库列名和实体名对不上 使用mapper解决 -->
<resultMap id="userMap" type="com.itheima.domain.User">
    <!-- 设置主键  property:实体类的属性名称,column数据库的字段名称-->
    <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>

<!-- 查询所有 -->
<select id="findAll" resultMap="userMap">
    select * from user
</select>
2.mybatis配置细节(主配置文件:SqlMapConfig.xml)

properties标签
  可以在标签内部配置数据库信息,也可以通过外部引用

<!--  使用properties配置  -->
    <properties resource="Jdbc.properties">
        <!-- 使用property标签配置 -->
<!--        <property name="driver" value="com.mysql.jdbc.Driver"/>-->
<!--        <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>-->
<!--        <property name="username" value="root"/>-->
<!--        <property name="password" value="root"/>-->
    </properties>

    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

  xxx.properties文件内容如下:

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/eesy_mybatis
jdbc.username = root
jdbc.password = root

properties标签
  配置别名,它只能配置domain中类的别名

<!--  typeAliases配置别名,它只能配置domain中类的别名  -->
    <typeAliases>
        <!-- typeAlias用于配置别名。type属性配置全限定类名,alias指定别名,指定别名后不再区分大小写 -->
       <typeAlias type="com.itheima.domain.User" alias="user"></typeAlias>
        <!-- 用于指定要起别名的包,指定后,该包下的所有实体类都会被注册别名,并且类名就是别名,不再区分大小写 -->
        <package name="com.itheima.domain"/>
    </typeAliases>

mappers标签的子标签package
  指定Dao所在的包,之后不需要写全限定类名,只需要写类名即可

<!--  配置映射文件  -->
    <mappers>
        <!--  指定映射文件的位置  -->
        <mapper resource="com/itheima/dao/IUserDao.xml"></mapper>
        <!-- package用于指定dao接口所在的包,指定后就不需要在写resource或者class了 -->
        <package name="com.itheima.dao"/>
    </mappers>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值