MyBatis快速入门
Mybatis官方教程
- MyBatis官方入门教程
- MyBatis XML 配置详解
- MyBatis XML 映射文件详解
- MyBatis 动态 SQL详解
- MyBatis Java API详解
- Mybatis SQL 语句构建器
- MyBatis 日志配置
Mybatis spring官方教程
开源项目
知识点
相关文章
更多最近更新
更多MyBatis-Spring 示例代码
2019-05-06 23:35|来源: 网路
Sample Code
NOTE 查看 JPetstore 6 demo 获取更多关于 Spring 在完整的应用服务上面的使用例子..
您可以从此处查看 MyBatis-Spring 的示例代码 repo:
任何一个示例都在 JUnit 4 中运行.
示例代码显示了事务服务从数据访问层获取域对象的典型设计.
FooService.java 作为服务:
@Transactional public class FooService { private UserMapper userMapper; public void setUserMapper(UserMapper userMapper) { this.userMapper = userMapper; } public User doSomeBusinessStuff(String userId) { return this.userMapper.getUser(userId); } }
它是一个事务 bean,所以当调用它的任何方法时,事务被启动并且在方法结束时提交,且不会抛出未经检查的异常.请注意,事务行为配置为 @Transactional 属性. 这不是必需的 Spring 提供的任何其他方式都可用于划分你的事务.
此服务调用使用 MyBatis 构建的数据访问层. 这层只是一个界面 UserMapper.java 这将与 MyBatis 建立的动态代理一起使用运行时并通过 Spring 注入服务.
public interface UserMapper { User getUser(String userId); }
注意,为了简单起见,我们使用了接口 UserMapper.java 对于 DAO 场景其中一个 DAO 层是用接口和一个实现构建的,尽管在这种情况下它将会更多足够使用一个接口调用 UserDao.java 来取代.
我们将看到不同的方法来找到映射器接口,将其注册到 Spring 并将其注入到服务 bean 中:
测试用样例 | 描述 |
---|---|
SampleMapperTest.java | 显示基于 MapperFactoryBean 的基本配置,这将动态构建一个实现 UserMapper |
SampleScannerTest.java | 显示如何使用 MapperScannerConfigurer 来实现项目中所有 mappers 的自动发现. |
SampleSqlSessionTest.java | 显示如何使用 Spring SqlSession 手动编写 DAO 层并提供你自己的实现 UserDaoImpl.java. |
SampleConfigurationTest.java | 显示如何使用 Spring 的 @Configuration 来手动创建 MyBatis beans . |
SampleEnableTest | 现实如何使用 Spring 的 @Configuration 和 @MapperScann 注解来自动发现 mappers. |
SampleNamespaceTest | 显示如何使用自定义 MyBatis XML 命名空间. |
查看 applicationContext.xml 文件的区别以进行 MyBatis-Spring 实战.
相关问答
更多-
如何导入
mybatis-spring [2023-09-03]mybatis是是数据持久层的框架,它本质上也是通过jdbc进行数据库连接的,只不过做了封装,更加的简单,所有也需要引入jdbc的jar包。 -
mybatis-spring支持mysql 什么版本[2023-10-12]
public ApplicationContext ac = new ClassPathXmlApplicationContext(new String[] {"mybatis-spring.xml","spring.xml"}); StudentService studentService =(StudentService)ac.getBean("studentService"); -
一些有用的教程/介绍是: 基于DAO-XML的逐步教程MyBatis http://hmkcode.com/java-mybatis-mysql/ 一个示例项目,显示XML Mapper用法和库设置 http://www.javacodegeeks.com/2012/11/mybatis-tutorial-crud-operations-and-mapping-relationships-part-1.html Koans项目有助于发现一些关键点 https://github.com/quux00/myba ...
-
给定的sqlSessionFactory只能关联一个数据源。 但这不是主要问题。 主要问题是本地缓存与mybatis会话相关联 。 因此,当您使用两个不同的会话时,您将拥有两个不同的本地缓存 - 每个会话一个,并且有一个sqlSessionFactory将无济于事。 您应该考虑的选项是为只读会话设置localCacheScope = STATEMENT。 在这种情况下,它不会在执行查询后缓存结果。 为了能够仍然使用缓存,可以使用自定义适配器为某些全局配置的缓存或使用全局缓存(例如ehcache)的现有缓存适 ...
-
MyBatis-Spring插入对象列表并检索其新ID(MyBatis-Spring insert a list of objects and retrieve their new IDs)[2023-05-16]
如果列表大小不是太大,请在java代码中执行循环插入 for(Bean bean : list){ list.insert(bean); } 在mapper.xml中插入方法应该添加SELECT LAST_INSERT_ID() If the list size is not too large, do loop i ... -
您应该查看jpetstore代码结构的样子。 Mapper接口用于映射xml配置中定义的sql语句,然后您可以简单地将自动创建的映射器bean注入或自动装入DAO bean。 让我们说(假设mapper接口是MyMapper):你可以在myproject.persistence包下的PersonMapper.xml中定义你的sql(注意:接口应该与xml在同一个包中)。
MyBatis-Spring回滚不适用于多个事务管理器(MyBatis-Spring rollback not working with multiple transaction managers)[2022-09-02]
我在 @RisingDragon找到了解决方案: “如果你从另一个本地方法调用它,那么它将无法工作,因为spring无法知道它被调用并启动事务。 如果你是通过使用包含insertNotes()方法的类的自动对象从另一个类的方法调用它,那么它应该工作。“ 在我的例子中,我创建了第二个类 (例如RisingDragom的NoteClass)和一些@Transactional方法(例如我的代码中的insertUser)然后,回滚工作了!! 第二类出现在调试器中,尾部为“$$ EnhancedByCGLib” 。 ...经过大量的搜索,不像这个链接中给出的可能适用于旧版本或iBatis的解决方案(但这不适用于最新版本),我发现myBatis 3.xx根本不支持返回自动生成id /插入键。 相反,它返回更新的数字行,因此在我的情况下它返回1.您可以在此链接上阅读更多内容。 After doing a lot of search, unlike the solution given in this link which might work for older versions or iBatis(but this does ...如何使用MyBatis-Spring在MyBatis中配置2个数据库(How to configure 2 databases in MyBatis using MyBatis-Spring)[2022-04-17]
您的配置大多是正确的。 您遇到的问题是您使用自动装配来注入一个callService依赖项。 似乎您使用SqlSessionDaoSupport并且其sqlSessionTemplate字段是自动装配的。 定义了两个模板,因此spring无法自动连接依赖项。 您需要手动指定正确的模板。 Your configuration is mostly correct. The problem you face is that you use autowiring to inject one of callServi ...