分类:
编程软件 Java 中间件 Elasticsearch 前端开发 kafka 云计算大数据 Lua zookeeper PHP 网络与运维 项目构建管理 ActiveMQ 办公应用软件 Memcached RabbitMQ Sentinel Nacos

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 实战.

相关问答

更多

使用MapperScannerConfigurer与spring3,mybatis和mybatis-spring(using MapperScannerConfigurer with spring3, mybatis, and mybatis-spring)

您应该查看jpetstore代码结构的样子。 Mapper接口用于映射xml配置中定义的sql语句,然后您可以简单地将自动创建的映射器bean注入或自动装入DAO bean。 让我们说(假设mapper接口是MyMapper): <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="org.myd.formulary.drugmaster.p

MyBatis-Spring插入对象列表并检索其新ID(MyBatis-Spring insert a list of objects and retrieve their new IDs)

如果列表大小不是太大,请在java代码中执行循环插入 for(Bean bean : list){ list.insert(bean); } 在mapper.xml中插入方法应该添加 <selectKey keyProperty="ID" order="AFTER" resultType="java.lang.Integer"> SELECT LAST_INSERT_ID() </selectKey> If the list size is not too large, do

MyBatis-Spring回滚不适用于多个事务管理器(MyBatis-Spring rollback not working with multiple transaction managers)

我在 @RisingDragon找到了解决方案: “如果你从另一个本地方法调用它,那么它将无法工作,因为spring无法知道它被调用并启动事务。 如果你是通过使用包含insertNotes()方法的类的自动对象从另一个类的方法调用它,那么它应该工作。“ 在我的例子中,我创建了第二个类 (例如RisingDragom的NoteClass)和一些@Transactional方法(例如我的代码中的insertUser)然后,回滚工作了!! 第二类出现在调试器中,尾部为“$$ EnhancedByCGL

mybatis-Spring boot 集成Mybatis怎么在控制台打印sql语句

一、需要mybatis和log4j的jar; 二、然后在log4j.properties文件里面将下面的代码粘贴进去就可以了: 版本一: [java] view plain copy log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout

与Spring + MyBatis + MySQL + JDBC连接太多(Too many connections with Spring + MyBatis + MySQL + JDBC)

1.手动创建SqlSessions时,必须确保在使用后关闭它们。 寻找你打开SqlSession的所有地方: SqlSession session = sessionFactory.openSession(); 确保您在使用后关闭会话。 你应该在try-finally块中这样做,如下所示: SqlSession session = sqlSessionFactory.openSession(); try { // following 3 lines pseudocode for "d

相关文章

更多

最近更新

更多