mybatis总结

1、mybatis特点:
    mybatis是一种持久层框架,也属于ORM映射,前身是ibatis。
    相比于hibernate,hibernate为全动自动化,配置文件书写之后不需要书写SQL语句,但欠缺灵活,很多时候需要优化
    mybatis为半自动化,需要自已写SQL语句,需要自己定义映射。增加了程序员的一些操作,但带来了设计上的灵活
    mybatis为对数据库的兼容性比hibernate差。移植性不好,但可编写灵活和高性能的SQL语句
    
2、mybatis环境搭建。


3、命名空间
在orm映射文件根元素下加入
<mapper namespace="user">
设置命名空间


命名空间的作用:
更好地分类SQL语句块,更好维护
防止SQL语句块重名


在设置了命名空间后,那么在相应的程序调用中,方可以使用 “命名空间 . 语句块名”进行调用相应的sql语句。


4、resultMap和resultType的使用
resultMap 可以定义属性和数据库列的对应关系,提高重用性,其它查询语句也可以引用。
<resultMap id="resMan"  class="com.lovo.bean.ManBean">
    <result property="manId" column="id"/>
    
</resultMap>
书写SQL引用结果集
<select id="findAll" resultMap="resMan">
  select * from t_man
  </select>




resultType为查询返回的类型,只能查询基本信息,不能查询关联信息,只能在属性名和列名相同时使用。
<select id="all" resultClass="users">
select * from t_user
</select>


5、条件查询
mybatis同时支持parameterType和Map集合提供参数
parameterType方式:
<select id="findByName" resultType="man"  parameterType="user">
  select * from t_man where userName like #{userName}
  </select>
 
Map方式:
<select id="findUserByName" resultType="user">
select * from t_user where id=#{id};//引用Map的id键对应的值
</select>


Map queryMap  = new HashMap();
queryMap.put("id", 3);
List<UserBean> list = this.getSqlSessionTemplate().
               selectList("findUserByName",queryMap);
               
6、条件查询SQL语句的书写
如果在SQL语句中有特殊字符,可以在CDATA块中书写。
<![CDATA[
select * from t_man where birthday < #{birthday}
]]> 


7、$和#的区别
#在生成SQL时,对于字符类型参数,会拼装引号
$在生成SQL时,不会拼装引号,可用于order by之类的参数拼装




8、批量操作和foreach标签
<delete id="delManyMessage" parameterClass="message">
delete from t_message where id in(
<foreach collection="ids" item="id" separator=",">
#{id}
</foreach>
)
</delete>
collection 为用于遍历的元素(必选) 
item表示集合中每一个元素进行迭代时的别名.
separator表示在每次进行迭代之间以什么符号作为分隔 符.


9、动态SQL
当查询条件需要动态生成时,需要使用动态SQL
<select id="dynaFindUser"  resultMap="user">
select * from t_user where 1=1 
<if test="id != 0">
and u_id > #{id}
</if>
<if test="userName != null">
and u_userName like '%${userName}%'
</if>
</select>

10、掌握一对多、多对多关系映射配置
    <!-- 属性名resultList 类型为List集合  
          column是本表要传入的select语句块中的参数,集合查询的sql语句id定义为resultByUid -->
    <collection property="resultList" column="t_id" select="resultByUid"/>


11、掌握mybatis和spring整合
dataSource定义数据源DriverManagerDataSource。
配置核心对象sqlSession
配置事务管理器DataSourceTransactionManager


12、掌握动态分页查询
使用<include refid="dynaUserSql"/>
链接已存在的sql语句块<sql id="dynaUserSql">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring整合MyBatis的原理可以总结为以下几步: 1. 配置数据源:在Spring配置文件中配置数据源,可以使用Spring自带的数据源或第三方数据源。 2. 配置SqlSessionFactory:SqlSessionFactory是MyBatis的核心配置对象,可以通过Spring的MyBatis-Spring模块来配置SqlSessionFactory。 3. 配置MapperScannerConfigurer:MapperScannerConfigurer是MyBatis-Spring模块提供的一个扫描器,用于自动扫描Mapper接口并注册到Spring容器中。 4. 配置事务管理器:Spring提供了多种事务管理器,可以根据实际情况来选择。 总结一下,Spring整合MyBatis的过程就是将MyBatis的核心配置对象SqlSessionFactory和Mapper接口通过Spring的容器管理起来,并且使用Spring提供的事务管理器来管理事务。 具体的步骤如下: 1. 在Spring配置文件中配置数据源,可以使用Spring自带的数据源或第三方数据源。例如: ``` <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="123456" /> </bean> ``` 2. 配置SqlSessionFactory,可以使用MyBatis-Spring模块提供的SqlSessionFactoryBean来配置。例如: ``` <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="typeAliasesPackage" value="com.example.model" /> <property name="mapperLocations" value="classpath*:com/example/mapper/*.xml" /> </bean> ``` 其中,typeAliasesPackage用于指定实体类所在的包,mapperLocations用于指定Mapper XML文件所在的路径。 3. 配置MapperScannerConfigurer,可以使用MyBatis-Spring模块提供的MapperScannerConfigurer来配置。例如: ``` <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper" /> </bean> ``` 其中,basePackage用于指定Mapper接口所在的包。 4. 配置事务管理器,可以使用Spring提供的事务管理器。例如: ``` <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> ``` 最后,在Service层的方法上添加@Transactional注解即可实现事务管理。 综上所述,Spring整合MyBatis的过程比较简单,只需要配置几个关键的对象即可。同时,Spring提供了很多方便的注解和工具类,可以更加方便地使用MyBatis

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值