Mybatis
colie_li
coding
展开
-
获取Dao上的自定义注解(了解Mybatis与Spring整合原理)
Dao类@Repository@Tag("user_tag")public interface UserDao {void save(User u)}需要是:将dao放入到一个本地Map中,key是Tag注解的内容,值是UserDao的Bean对象,在上层调用的时候直接Map.get("user_tage").save(u)即可实现1:实现接口BeanPostProce...原创 2019-11-12 23:13:26 · 801 阅读 · 0 评论 -
3中Mybatis批量查询方式
1、如果是一个参数的时: List list = new ArrayList();list.add(1);list.add(2);list.add(3);TestDAO.getItermByList(list);//DAO的接口://public List> getItermByList(List list)xml中的sql: SELECT id,display_na原创 2016-01-14 11:42:42 · 16337 阅读 · 1 评论 -
Mybatis批量查询和模糊查询
select id as Id, from user where score >= 0 and pname like CONCAT(CONCAT('%', #{name}), '%') and channel_id in <foreach collection="list" index="index" open="(" close=")" se原创 2016-02-22 14:37:59 · 1465 阅读 · 0 评论 -
Mybatis对乐观锁的支持
上一篇文章《MySQL悲观锁总结和实践》谈到了MySQL悲观锁,但是悲观锁并不是适用于任何场景,它也有它存在的一些不足,因为悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。如果加锁的时间过长,其他用户长时间无法访问,影响了程序的并发访问性,同时这样对数据库性能开销影响也很大,特别是对长事务而言,这样的开销往往无法承受。所以与悲观锁相对的,我们有了乐观锁,具体参见下面介绍:转载 2016-02-26 19:33:06 · 35907 阅读 · 4 评论 -
Mybatis传多个参数(三种解决方案)
第一种方案DAO层的函数方法Public User selectUser(String name,String area);对应的Mapper.xml select * from user_user_t where user_name = #{0} and user_area=#{1}其中,#{0}代表接收的是dao层中的第一个参数,#{原创 2016-01-29 16:09:52 · 618 阅读 · 0 评论 -
spring mybatis事务使用注意事项
jdbc.xml p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}" p:username="${jdbc.username}" p:password="${jdbc.password}"原创 2016-07-08 14:42:55 · 677 阅读 · 0 评论 -
Mybatis原生的连接池的实现
一句话概括Mybatis的连接池:最保守的数据库连接池。 这里分析的是Mybatis3的代码,有什么问题,欢迎大家拍砖。 首先看代码树: datasource目录下就是连接池全部的代码,和DBCP以及C3P0比起来简直是简单到极致。 主要关注三个类 PooledConnection、Pool原创 2016-12-10 11:02:18 · 2508 阅读 · 0 评论 -
c3p0详细配置
c3p0详细配置官方文档 : http://www.mchange.com/projects/c3p0/index.html3301000falseTestfalse100测试连接。类名需制定全路径。 Default: com.mchange.v2.c3p0.impl.DefaultConnectionTe转载 2017-11-22 19:17:34 · 303 阅读 · 0 评论 -
Mybatis自定义DataSource使用druid
一、mybatis配置文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configura转载 2018-11-04 23:47:54 · 9001 阅读 · 1 评论 -
Mybatis使用注解批量写入并返回id
demo:@Insert({ "<script>", "insert into table_name(column1, column2, column3) values ", "<foreach collection='list' item='item' index='index' separator=','>", "(#{item.field1}, #{it...原创 2018-11-07 21:13:58 · 1875 阅读 · 0 评论 -
Mybatis一对多查询
如果一个对象中有一个list并且为作为其属性,那么需要使用collection 和ofType关键字,数据库表结果t_operation_role 角色表t_operation_module modules 模块表t_operation_role_module 两者关联表 SELECT role.id AS id, role.key AS `keys`,原创 2016-01-29 17:13:50 · 527 阅读 · 0 评论 -
使用JDBC进行批处理
当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率。2、实现批处理有两种方式。l 第一种方式:Statement.addBatch(sql) (Statement中有一个集合属性list存储所有的sql),执行批处理SQL语句executeBatch()方法:执行批处理命令clearBatch()方法:清除批处理命转载 2015-08-12 17:02:25 · 499 阅读 · 0 评论 -
MyBatis+MySQL 返回插入的主键ID
需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值。 方法:在mapper中指定keyProperty属性,示例如下: insert into user(userName,password,comment) values(#{userName},#{password},#{comment})如上所示,我们在insert中指定了ke转载 2014-12-12 13:12:38 · 641 阅读 · 0 评论 -
Mybatis级联操作
对于Mybatis级联操作,网上好多资料都在讲级联查询的一些Mapping的标签,但是对于级联更新和插入的资料不是很多,但是这似乎是和Mybatis关系不大,只是之前用Hibernate用习惯了,感觉这些东西是由持久层框架l来维护的,由于Mybatis比Hibernate高效,摒弃了这些,所以对于INSERT和UPDATE的级联关系大部分是由数据库本身去维护的。级联更新 有两个对象原创 2014-12-12 14:14:08 · 9081 阅读 · 0 评论 -
Mybatis 级联插入更新
刚开始接触Mybatis,在进行级联插入更新时发现不是很方便:现有表A和B,B表的主键为A表的外键,先有需求是,插入一条B,并且与B关联的A也随之更新其外键。所做的方式是先Save一条B,然后查找出来B。然后通过A的Set 方法把B set进去然后UPDATE A过程比较繁琐,不知大家有没有什么好的做法原创 2014-12-11 19:08:39 · 9673 阅读 · 0 评论 -
MyBatis源码分析(三)-SqlSession理解
SqlSession理解一、创建SqlSession1.创建事务a.事务工厂根据DataSource创建一个事务对象(Connection对象,事务级别,是否自动提交)b.事务工厂根据Connection创建一个事务对象(事务级别和是否自动提交已经被设置在Connection对象中)c.系统默认的事务工厂是ManagedTransactionFactory,默认是关闭连接的 p转载 2014-12-12 15:13:07 · 684 阅读 · 0 评论 -
源码解读Mybatis List列表In查询实现的注意事项
在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Mybatis中提供了foreach功能,该功能比较强大,它允许你指定一个集合,声明集合项和索引变量,它们可以用在元素体内。它也允许你指定开放和关闭的字符串,在迭代之间放置分隔符。这个元素是很智能的,它不会偶然地附加多余的分隔符。下面是一个演示示例: Select from jria wher转载 2014-12-12 14:26:20 · 662 阅读 · 0 评论 -
spring,mybatis事务管理配置与@Transactional注解使用
spring,mybatis事务管理配置与@Transactional注解使用概述事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。Spring Framework对事务管理提供了一致的抽象,其特点如下:为不同的事务API提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(J转载 2014-12-28 12:00:02 · 997 阅读 · 0 评论 -
Mybatis源码学习(一)-整体框架理解
一、对源码先上一个结构图:源代码主要在org.apache.ibatis目录下,18个包,其中在应用中主要的包有:builder、session、cache、type、transaction、datasource、jdbc、mapping,提供支撑服务的包有annotation、binding、io、logging、plugin、reflection、scripting、excep转载 2014-12-12 15:11:36 · 1185 阅读 · 0 评论 -
Mybatis各种模糊查询
模糊查询:工作中用到,写三种用法吧,第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 2. 使用 ${...} 代替 #{...} SELECT * FROM tableName WHERE name LIKE '转载 2015-04-22 17:51:47 · 1645 阅读 · 0 评论 -
MyBatis批量操作报错:Parameter 'xxxList' not found. Available parameters are [list]
需求: 根据传入的参数批量 删除数据:DAO:List ll = new ArrayList(); for(int i=10;i<25;i++){ ll.add(i); } int res = userMapper.delUser(li); System.out.println(res);xml: delete from users whe原创 2015-04-06 22:46:49 · 4457 阅读 · 1 评论 -
mybatis批量插入、删除
//把Group对象装在List中然后进行如下操作 insert into group(group_id,a_id,b_id) values (#{itm.GroupId},#{itm.AId},#{itm.BId}) delete from group group_id = #{group_id} and group_i原创 2015-04-23 19:09:15 · 853 阅读 · 0 评论 -
MyBatis动态连接数据库,动态传入数据库参数
配置MyBatis时,一般都会将数据库参数放在配置文件中,如jdbc.properties,然后通过载入配置文件的方式获取参数: <!-- -->转载 2014-12-09 11:23:44 · 4204 阅读 · 0 评论