Mybaitis配置总结

  • 在mybatis-config.xml中配置分页插件,插件配置必须放在mapper前面
    <plugins>
        <plugin interceptor="com.rrtong.frame.dao.PaginationInterceptor">
            <property name="dialect" value="oracle"/>
        </plugin>
    </plugins>    
  • Mybatis分页拦截器获取sql

      /*以下得到的是要执行的sql语句,并不是配置的sql语句*/
      StatementHandler statementHandler = (StatementHandler)invocation.getTarget();
      BoundSql boundSql = statementHandler.getBoundSql();
      String originalSql = boundSql.getSql();    

  • 出现java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransactionFactory.newTransaction(Ljava/sql/Connection;)Lorg/apache/ibatis/transaction/Transaction;
            版本不正确,需要使用更高版本的 mybatis-spring

           https://mybatis.googlecode.com/files/mybatis-spring-1.2.1.zip

  • Mybaitis参数严格区分大小写

             mybatis 配置文件中的参数绑定区分大小写,必须与传递的参数名保持一致

  • 出现数据类型111时,这是因为数据库字段数据类型与entity中的字段定义的数据类型不一致导致的,有以下两种方法解决

              1、设定entity的数据类型与数据库类型一致
              2、在sql中定义参数的数据类型,比如

        where userCode = #{userCode, jdbcType=VARCHAR}

  • 实现数据库字段与实体字段的关系对应

     <resultMap id="Archive" type="Archive">  
        <id     column="ARCHIVESKEY" property="archiveKey"     />  
        <result column="title"       property="archiveTitle"    />  
    </resultMap>

  • 定义oracle数据库的mybatis获取主键并返回的配置,mybatis before after设置

<p>       <selectKey  keyProperty="archiveKey" order="BEFORE" resultType="String">
           SELECT  SEQ_ARCHIVE.NEXTVAL
           FROM DUAL
       </selectKey></p>

  • 定义其他数据库的Mybatis获取主键并返回的配置

    <insert id="insertUser" useGeneratedKeys="true" keyProperty="userId" parameterType="com.mybatis.User">  
        insert into user(userName,password)  
        values(#{userName},#{password})  
    </insert>  

  • 定义mybatis查询结果注入到实体中

       <resultMap id="Archive" type="Archive">  
           <id     column="SPAARCHIVESKEY" property="archiveKey"     />  
           <result column="title"          property="archiveTitle"    />     
       </resultMap>



       <select id="getArchive"  parameterType="HashMap"  resultMap="Archive">
		select 
		    SPAARCHIVESKEY,
		    TITLE	    
		from Archives
		where USERCODE = #{userCode, jdbcType=VARCHAR}	
                And VALID= #{valid, jdbcType=VARCHAR}		
	</select>


  • 定义Mybaitis更新数据库表记录

        <update id="updateArchive" parameterType="Archive">
		update Tbl_ARCHIVES
		set
			title		= #{archiveTitle},
			content		= #{content},
			feeValue	= #{feeValue} 
			security 	= #{security},
			subjectType     = #{subjectType},
			gradeType 	= #{gradeType},
			gather 		= #{gather},
			archiveType = #{archiveType},
			keyWordName = #{keyWordName}
		where archivesKey = #{archiveKey}
	</update>

  • 定义mybatis删除数据表记录的方式

<delete id="deleteArchive" parameterType="String">
	delete from  title 
	where spaArchivesKey = #{archiveKey}
</delete>	
  • 定义公共的sql语句,允许复用

    <sql id="addrColumn">
         a.PUSH_ID,
         a.MEMBER_ID,
         a.CONTENT,
         a.PHOTO,
         a.PUSH_NAME,
         a.IS_AUTO,
         a.IS_FINE,
         a.IS_SOURCE,
    	 a.SOURCE_PUSH_ID, 
         DATE_FORMAT(a.CREATE_TIME,'%Y-%m-%d %H:%i:%s') CREATE_TIME, 
         DATE_FORMAT(a.DELETE_TIME,'%Y-%m-%d %H:%i:%s') DELETE_TIME 
     </sql>
       引用复用的sql语句

	<select id="getMyOrFineBlog" parameterType="MicroBlog" resultType="MicroBlog">
	    SELECT 
		<include refid="addrColumn"/> 
            FROM TBL_BLOG_PUSH a, TBL_USER_MEMBER b 
            WHERE a.MEMBER_ID = b.MEMBER_ID 
	    <if test="isFine == 1"> AND a.IS_FINE = #{isFine} </if>				
	</select>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> ``` 2. 创建一个Mapper接口,例如UserMapper.java: ```java public interface UserMapper { User getUserById(int id); } ``` 3. 创建一个mapper.xml文件,例如UserMapper.xml,定义SQL语句: ```xml <mapper namespace="com.example.mapper.UserMapper"> <select id="getUserById" resultType="com.example.model.User"> SELECT * FROM users WHERE id = #{id} </select> </mapper> ``` 4. 在应用程序中使用MyBatis: ```java public class MyApp { public static void main(String[] args) { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); try (SqlSession session = sqlSessionFactory.openSession()) { UserMapper userMapper = session.getMapper(UserMapper.class); User user = userMapper.getUserById(1); System.out.println(user); } } } ``` 这是一个简单的MyBatis示例,它演示了如何使用Mapper接口和mapper.xml文件来执行SQL查询操作。当然,实际使用中还可以进行更多的配置和操作。 MyBatis是一个Java持久层框架,它提供了缓存机制来提高数据库访问性能[^1]。 一级缓存是MyBatis默认开启的本地缓存,它存储在会话级别,即在同一个会话中,相同的查询语句将会从缓存中获取结果,而不是再次向数据库发出查询请求。一级缓存的作用是减少数据库访问次数,提高性能[^1]。 二级缓存是全局缓存,它存储在会话工厂级别,即在不同的会话中,相同的查询语句将会从缓存中获取结果。二级缓存的工作机制是将查询结果序列化后存储在缓存中,当需要获取结果时,将缓存中的序列化结果反序列化为对象返回。二级缓存的使用需要在MyBatis配置文件中进行配置[^1]。 以下是MyBatis缓存的一些相关配置: - eviction:缓存的回收策略,包括LRU(最近最少使用)、FIFO(先进先出)和SOFT(软引用)等。 - flushInterval:缓存刷新间隔,即多长时间刷新一次缓存。 - readOnly:是否只读,如果设置为true,则缓存中的对象不会被修改。 - size:缓存存放多少元素。 - type:指定自定义缓存的全类名[^1]。 总结来说,MyBatis的缓存机制可以提高数据库访问性能,通过一级缓存和二级缓存的使用,可以减少数据库查询次数,提高系统性能[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值