ibatis

Ibatis 事务

女生的网名这么多〃 提交于 2020-03-12 16:39:55
一 基于JDBC的事务 针对的是一个JDBC连接实现,不能跨多个数据库连接。如两个操作分别由两个不同的Connection执行,则不能实现 事例: public static void main(String[] args) throws SQLException, IOException { // TODO Auto-generated method stub Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader); try{ sqlMapClient.startTransaction(); User user = (User) sqlMapClient.queryForObject("getUser", "test"); System.out.println("id=" + user.getId()); sqlMapClient.commitTransaction(); }finally{ //如果出现异常或没有提交,会进行roll back sqlMapClient.endTransaction(); } } 内部实现原理 MappedStatement

org.apache.ibatis.binding.BindingException原因总结

江枫思渺然 提交于 2020-03-09 15:56:21
bug往往会让人suprise,今天遇到了这个问题,在网上找了很多解决方法,都没有解决,然而一个小小的尝试就解决,一个忠告代码不要想着简写。 这下面这几种是自己在网上总结的方法网上: 1、mapper接口和mapper.xml是否在同一个包(package)下?名字是否一样(仅后缀不同)? 2、mapper.xml的命名空间(namespace)是否跟mapper接口的包名一致? 3、接口的方法名,与xml中的一条sql标签的id一致 4、如果接口中的返回值List集合(不知道其他集合也是),那么xml里面的配置,尽量用resultMap(保证resultMap配置正确),不要用resultType 5、如果你的项目是maven项目,请你在编译后,到接口所在目录看一看,很有可能是没有生产对应的xml文件,因为maven默认是不编译的,因此,你需要在你的pom.xml的<build></build>里面, 加这么一段: <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> 从这开始是我包的错,和解决方法 很多人

最全 Mybatis 使用笔记

我与影子孤独终老i 提交于 2020-03-08 14:32:21
说明:本篇文章中有部分内容参考自下面相关链接上的内容,小伙伴可自行参考.本文在其基础上进行整理并扩充部分内容. 我们从最开始的 jdbc 开始说起. public class JdbcUtil { // 单机 MySQL 支持的最大连接数是 16384 private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql://localhost:3306/guns"; private static final String USER_NAME = "root"; private static final String PASSWORD = "123456"; //最大空闲链接 private static final int MAX_IDLE = 10000; //最的等待时间 private static final long MAX_WAIT = 30000; //最大活动链接 private static final int MAX_ACTIVE = 1000; //初始化时链接池的数量 private static final int INITIAL_SIZE = 1000; private static final

spring boot框架初步搭建时所遇到的问题集--01

老子叫甜甜 提交于 2020-03-07 14:34:48
1.数据库版本及url配置问题---java.sql.SQLException,如图: 其解决方案为 : 1)降低数据库驱动版本 (传统的maven项目通常会这么做) 2)在url中追加时区配置(serverTimezone=GMT%2B8) 2.数据库服务连接不上---java.net.ConnectException:Connection refused:connect 问题分析:检查数据库服务是否启动,连接数据库的用户名/密码是否正确 3.数据库版本或url配置问题---jdbc.DataSourceProperties$DataSourceBeanCreationException:Failed to detemine a suitable driver class 问题分析:检查数据的服务是否已启动,连接数据的url配置是否正确,数据库版本与驱动是否匹配 4. 访问的数据库不存在---java.sql.SQLSynaxErrorException:Unkown database 'xxx' 问题分析:检查url配置的数据库是否存在或数据库名是否写错 5. 指定命名空间下的元素已经存在---java.lang.IllegalArgumentException: Caused by: java.lang.IllegalArgumentException: Mapped

pagehelper联表分页查询

此生再无相见时 提交于 2020-03-06 03:45:20
(springboot2.0.1、pagehelper5.1.4) pagehelper联表分页,会默认在sql语句的后面添加 limit ?,进行分页。如果是复杂的sql联表查询结果远远不能满足我们,添加 limit在我们想要的位置进行分页,下面的代码中“AS limitable”,为分页标识的sql. 末尾带有 AS limitable 的子查询会拼接上limit进行先分页.然后再外联查询 import java.lang.reflect.Field; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.ibatis.cache.CacheKey; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.mapping.ParameterMapping; import

ibatis实现Iterate的使用

限于喜欢 提交于 2020-03-05 14:25:36
<iterate property="" /*可选, 从传入的参数集合中使用属性名去获取值, 这个必须是一个List类型, 否则会出现OutofRangeException, 通常是参数使用java.util.Map时才使用, 如果传入的参数本身是一个java.util.List, 不能只用这个属性. 不知道为啥官网: http://ibatis.apache.org/docs/dotnet/datamapper/ch03s09.html#id386679 说这个属性是必须的, 但是测试的时候是可以不设置这个属性的, 还望那位大虾知道, 讲解一下. */ conjunction="" /*可选, iterate可以看作是一个循环, 这个属性指定每一次循环结束后添加的符号, 比如使每次循环是OR的, 则设置这个属性为OR */ open="" /*可选, 循环的开始符号*/ close="" /*可选, 循环的结束符号*/ prepend="" /*可选, 加在open指定的符号之前的符号*/ > </iterate> <!-- 批量删除对象的时候,iterate不要property属性 --> <delete id="delStudybook" parameterClass="java.util.List"> delete FROM STUDYBOOK WHERE ID IN

ibatis开发实例

江枫思渺然 提交于 2020-03-05 00:35:09
ibatis Mybatis 官网:http://blog.mybatis.org/ ibatis的自动生成插件:ibator 搭建iBatis 开发环境: 1 、导入相关的jar 包,ibatis-2.3.0.677.jar 、mysql-connector-java-5.1.6-bin.jar 2 、编写配置文件:Jdbc 连接的属性文件 ;总配置文件, SqlMapConfig.xml 关于每个实体的映射文件(Map 文件) Demo : model层 package com.ccssoft.model; import java.io.Serializable; import java.util.Date; @SuppressWarnings("unused") public class User implements Serializable { private Integer userID; private String accountNo; private String password; private String name; private String phone; private String email; public Integer getUserID() { return userID; } public void setUserID(Integer

快速搭建Spring Boot + Mybatis开发环境

不问归期 提交于 2020-03-03 10:36:14
本文旨在以最少的步骤,快速搭建可运行的Spring Boot + Mybatis开发环境,需要有一定基础的玩家食用 项目搭建 必要操作 配置数据源 spring.datasource.*** 配置 mybatis.mapper-locations=classpath:xxx/*.xml 配置 mybatis.type-aliases-package=Model类包路径(逗号间隔) 配置类加注解 @MapperScan(basePackages = ["dao包路径"]) Model类加注解 @Alias("别名") mapper.xml的namespace用DAO接口的限定名,语句id和接口中方法名一致 至此可正常运行,但是在IDEA中,通过@Autowired注入DAO的地方会报错。通过<可选1>消除。 Could not autowire. No beans of 'MyRepository' type found. 可选操作 DAO接口加注解 @Repository (推荐) 或 @Component(消除IDEA注入报错) 省略<必要4>,DAO接口加注解 @Mapper 开启日志 mapper.xml模板 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD

MyBatis PageHelper分页插件

无人久伴 提交于 2020-03-03 09:34:11
1 PageHelper作用 官网: https://pagehelper.github.io/ PageHelper是一个Mybatis的分页插件, 负责将已经写好的sql语句, 进行分页加工。官网说法:如果你也在用 MyBatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页。 优点:无需你自己去封装以及关心sql分页等问题,使用很方便,前端取数据也很方便。 2 导入PageHelper插入依赖 <!--MyBatis的PageHelper插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.0.3</version> </dependency> 3 添加分页插件配置 3.1 SqlMapConfig.xml配置 如果是单独的MyBatis框架,需要在SqlMapConfig.xml添加分页插件的配置 <!-- plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下: properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, plugins?,