Mybaties

Mybatis配置概述
MyBatis的核心配置文件配置了很多影响MyBatis行为的信息,这些信息通常只会配置在一个文件中,并且不会轻易改动。另外,与Spring框架整合后,MyBatis的核心配置文件信息将配置到Spring的配置文件中。因此,在实际开发中需要编写或修改MyBatis的核心配置文件的情况不多。

映射器

在SQL映射文件中元素用于映射SQL的select语句,其示例代码如下:

<!-- 根据uid查询一个用户信息 -->
<selectid="selectUserById"parameterType="Integer"resultType="com.po.MyUser">
    select * from user where uid = #{uid}
</select>
1
2
3
4
上述示例代码中,id的值是唯一标识符,它接收一个Integer类型的参数,返回一个MyUser类型的对象,结果集自动映射到MyUser属性。
1


Map接口
在实际开发中,查询SQL语句经常需要多个参数,比如多条件查询。多个参数传递时,元素的parameterType属性值的类型是什么呢?在MyBatis中允许Map接口通过键值对传递多个参数。
假设数据操作接口中有个实现查询陈姓男性用户信息功能的方法:
public List selectAllUser(Map<String, Object> param);
此时,传递给映射器的是一个Map对象,使用它在SQL中设置对应的参数,对应SQL文件代码如下:

    <!-- 查询陈姓男性用户信息 -->
    <select id="selectAllUser"  resultType="com.po.MyUser" parameterType="map">
        select * from user 
        where uname like concat('%',#{u_name},'%')
        and usex = #{u_sex}
    </select>
1
2
3
4
5
6
上述SQL文件中参数名u_name和u_sex是Map的key。
1
JavaBean
在src目录下,创建一个名为com.pojo的包,在包中创建一个POJO类SeletUserParam
其次,将Dao接口中的selectAllUser方法修改为:
public List selectAllUser(SeletUserParam param);
再次,将com.mybatis包中的SQL映射文件UserMapper.xml中的“查询陈姓男性用户信息”代码修改为:

    <select id="selectAllUser"  resultType="com.po.MyUser" parameterType="com.pojo.SeletUserParam">
        select * from user 
        where uname like concat('%',#{u_name},'%')
        and usex = #{u_sex}
    </select>
1
2
3
4
5
最后,将com.controller包中UserController的“查询多个用户”代码片段修改。
1
insert
元素用于映射插入语句,MyBatis执行完一条插入语句后,将返回一个整数表示其影响的行数。它的属性与元素的属性大部分相同,在本节讲解它的几个特有属性。具体如下:
keyProperty:该属性的作用是将插入或更新操作时的返回值赋值给PO类的某个属性,通常会设置为主键对应的属性。如果是联合主键,可以在多个值之间用逗号隔开。
keyColumn:该属性用于设置第几列是主键,当主键列不是表中的第一列时需要设置。如果是联合主键时,可以在多个值之间用逗号隔开。
useGeneratedKeys:该属性将使MyBatis使用JDBC的getGeneratedKeys()方法获取由数据库内部生产的主键,如MySQL、SQL Server等自动递增的字段,其默认值为false。

创建映射文件
在src目录下,创建一个名为com.mybatis.mapper包,在该包中创建映射文件UserMapper.xml。

上述映射文件中,元素是配置文件的根元素,它包含了一个namespace属性,该属性值通常设置为“包名+SQL映射文件名”,指定了唯一的命名空间。


子元素、、以及中的信息是用于执行查询、添加、修改以及删除操作的配置。在定义的SQL语句中,“#{}”表示一个占位符,相当于“?”,而“#{uid}”表示该占位符待接收参数的名称为uid。


主键(自动递增)回填
MySQL、SQL Server等数据库的表格可以采用自动递增的字段作为主键。有时可能需要使用这个刚刚产生的主键,用以关联其他业务。

    <!-- 添加一个用户,成功后将主键值回填给uid(po类的属性)-->
    <insert id="addUser" parameterType="com.po.MyUser" 
    keyProperty="uid" useGeneratedKeys="true">
        insert into user (uname,usex) values(#{uname},#{usex})
    </insert>
1
2
3
4
5
自定义主键

如果实际工程中使用的数据库不支持主键自动递增(如Oracle),或者取消了主键自动递增的规则时,可以使用MyBatis的<selectKey>元素来自定义生成主键。
1
    <insert id="insertUser" parameterType="com.po.MyUser">
    <!-- 先使用selectKey元素定义主键,然后再定义SQL语句 -->
    <selectKey keyProperty="uid" resultType="Integer" order="BEFORE">
       select if(max(uid) is null, 1 , max(uid)+1) as newUid from user
    </selectKey>
    insert into user (uid,uname,usex) values(#{uid},#{uname},#{usex})
    </insert>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis是一款开源的持久化框架,它提供了很多可以配置的属性。这些属性可以帮助我们优化和定制我们的应用程序。 首先,我们有一些与数据库连接相关的属性。可以设置数据库的驱动程序名称、URL、用户名和密码,以及其他连接属性,例如连接池的大小和超时。 其次,我们有一些与事务管理相关的属性。我们可以配置事务管理器的类型、隔离级别和超时值。这些属性可以帮助我们确保数据操作的一致性和可靠性。 此外,我们还可以配置缓存相关的属性。我们可以设置缓存的类型、范围和大小,以及缓存的刷新间隔和过期策略。这些属性可以帮助我们提高数据访问的效率和性能。 另外,我们还可以配置一些与映射文件相关的属性。我们可以设置映射文件的位置和命名规则,以及其他与映射配置相关的属性。这些属性可以帮助我们管理和维护我们的映射文件。 最后,还有其他一些与日志记录、调试和性能优化相关的属性。我们可以设置日志记录器的类型和级别,以及其他与日志记录相关的属性。我们还可以配置调试器的类型和其他与调试相关的属性。这些属性可以帮助我们更好地了解和跟踪我们的应用程序的执行过程。 总之,通过配置这些属性,我们可以根据应用程序的需求来优化和定制我们的MyBatis应用程序。同时,这些属性也提供了一些常用的设置和功能,可以帮助我们更好地管理和维护我们的应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值