Tag: mybatis

使用foreach与mybatis进行批量插入

我正在使用mybatis,我想将ArrayList插入到某个表中。 可以在mapper中使用foreach,这最终会得到oracleexceptionORA_00933。 这是mybatis映射器: insert into SYS_ROLES_PERMISSIONGROUP (role_id, permissiongroup_id) values (#{model.role_id}, #{model.permissiongroup_id}) org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束### The error may involve com.gaotime.platform.system.mapper.RolePermissiongroupMapper.batchInsert-Inline ### The error occurred while setting parameters ### SQL: insert into SYS_ROLES_PERMISSIONGROUP (role_id, permissiongroup_id) values (?, ?) , (?, ?) , (?, ?) ### Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束; […]

动态数据源路由 – 未初始化DataSource路由器

我指的是本文 ,我们可以使用Spring Framework中的AbstractRoutingDataSource动态更改应用程序使用的数据源。 我正在使用Mybatis(3.3.0)和Spring(4.1.6.RELEASE)。 如果从主数据库获取数据时发生exception,我想切换到备份数据库。 在这个例子中,我使用了hsql和mysql db。 RoutingDataSource : public class RoutingDataSource extends AbstractRoutingDataSource { @Override protected Object determineCurrentLookupKey() { return DataSourceContextHolder.getTargetDataSource(); } } DataSourceContextHolder : public class DataSourceContextHolder { private static final ThreadLocal contextHolder = new ThreadLocal(); public static void setTargetDataSource(DataSourceEnum targetDataSource) { contextHolder.set(targetDataSource); } public static DataSourceEnum getTargetDataSource() { return (DataSourceEnum) contextHolder.get(); } […]

如何写选择标签formsmybatis选择

如果我有课 public class Product { private int id; private String name; private double price; private String type; } 一个dao界面 public interface { public Product selectOne(int id); } 数据库中的表 T_Product ( id tinyint, name varchar(50), price long, type varchar(30) ); 我想知道如何在mybatis中为selectOne方法编写sqlMapper!

MyBatis不使用布尔映射

我只是想用Mybatis映射一个布尔值,但我遇到了问题。 首先,我将向您展示所涉及的部分: XML File: Java类: public class DestinationTypeDTO { private long destinationTypeId; private String description; private boolean available; public long getDestinationTypeId() { return destinationTypeId; } public void setDestinationTypeId(long destinationTypeId) { this.destinationTypeId = destinationTypeId; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public boolean isAvailable() { return […]

在Mybatis迁移工具中的一个事务中运行多个mysql语句

我正在使用Mybatis迁移工具来维护我们数据库的架构,但是我遇到了以下问题。 目前,如果我们在迁移中使用多个语句,则它们分别在单独的事务中运行。 因此,如果我想要更改2个表(或运行多个语句)作为function的一部分并且其中一个中断,则必须手动还原任何首先运行的表。 但是,如果所有语句都成功完成,则mybatis迁移仅在changelog表中标记为完成。 这实在令人沮丧,因为如果整个迁移不是自治的,就无法维持一个常量的db状态。 设置 这是我们的测试数据库的mybatis mygration的(相关)设置。 ## JDBC connection properties. driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/gamealert_test?allowMultiQueries=true username=gamealert password=******** # If set to true, each statement is isolated # in its own transaction. Otherwise the entire # script is executed in one transaction. auto_commit=false # This controls how statements are delimited. # By default statements are delimited by […]

相当于MyBatis Guice中的MyBatis XML多环境

我正在编写一个需要根据上下文使用不同数据库的服务(一个简单的字符串标签)。 每个数据库都具有完全相同的模式。 数据库列表是动态的。 查看有关多个数据源的MyBatis-Guice文档 ,该示例是预先知道数据源列表的位置,每个数据源都有不同的映射器。 同样, 这里在SO上发现的问题也有相同的要求。 如上所述,我的要求更加动态和流畅。 我们的想法是将所有当前已知的数据库(及其连接信息)放在配置中,并在服务启动时进行解析。 然后,根据任何传入请求的上下文,代码应该为正确的数据库提取SqlSessionFactory。 使用该SqlSessionFactory的所有下游代码完全相同 – 即不依赖于请求上下文。 这意味着无论使用何种数据库,都使用相同的映射器。 我的MyBatis和Guice知识无疑是新的和有限的。 但是,我无法谷歌任何显示MyBatis-Guice等同于MyBatis 的XML配置支持的多环境方法的内容。

mybatis参数替换如何在@SelectProvider中工作

我inheritance了一些我想要理解的代码,而我在@SelectProvider上找到的任何搜索都发现了很多东西。 Java DAO @SelectProvider(type = CategoryDaoSelectProvider.class, method = “findByParentIdAndName”) Category findByParentIdAndName(@Param(“parentId”) Long parentId, @Param(“name”) String name); 选择提供商 public class CategoryDaoSelectProvider { public static String findByParentIdAndName(Map params) { Long parentId = (Long)params.get(“parentId”); // WHY IS THIS HERE??? StringBuffer buffer = new StringBuffer(); buffer.append(“SELECT COUNT(id) FROM Category “); if (parentId == null) { buffer.append(“WHERE parentId IS NULL […]

MyBatis:通过一个查询中的注释进行收集

我有一个xml映射器 – 一个选择和一个结果映射器。 它没有问题。 但我想使用注释。 我的映射器: 所以我确实喜欢这个 @Results({ @Result(id=true, property=”id”, column=”Id”), @Result(property=”comment”, column=”Comment”), ///,??? }) public List select(); 我无法理解如何通过注释映射我的集合而不再执行一个sql查询。 正如我发现的所有示例都假设执行了一个查询。 请帮忙。

使用MyBatis的Spring:期望的单个匹配bean但找到2

我一直在使用Spring和MyBatis,它对单个数据库的效果非常好。 我在尝试添加另一个数据库时遇到了困难(请参阅Github上的可重复示例 )。 我正在使用Spring Java配置(即不是XML)。 我见过的大多数示例都展示了如何使用XML实现这一点。 我有两个数据配置类(A和B),如下所示: @Configuration @MapperScan(“io.woolford.database.mapper”) public class DataConfigDatabaseA { @Bean(name=”dataSourceA”) public DataSource dataSourceA() throws SQLException { SimpleDriverDataSource dataSource = new SimpleDriverDataSource(); dataSource.setDriver(new com.mysql.jdbc.Driver()); dataSource.setUrl(“jdbc:mysql://” + dbHostA + “/” + dbDatabaseA); dataSource.setUsername(dbUserA); dataSource.setPassword(dbPasswordA); return dataSource; } @Bean public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSourceA()); return sessionFactory.getObject(); } […]

MyBatis:使用动态查询比较String值

我正在使用MyBatis映射一些我需要比较String参数( myString )的查询。 我的Mapper 界面是: public Map findSomething(@Param(“myString”) String myString); 我的XML如下: SELECT column1 as key, column2 as value FROM my_table column3 = 1 myColumn = 2 myColumn = 3 ORDER BY value; 当我执行此语句时,抛出以下错误: ERROR [stderr] Caused by: org.apache.ibatis.exceptions.PersistenceException: ERROR [stderr] ### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘myString’ in […]