spring和mybatis整合

第一种方法

一、导入依赖完善配置

二、在resources里配置mybatis-config.xml,一般什么只放<setting>和别名

三、在resources里配置beans.xml,一般只存放引用mybatis的配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
       https://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">

   <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
       <property name="url" value="jdbc:mysql://127.0.0.1:3306/student?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
       <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
       <property name="password" value="root"/>
       <property name="username" value="root"/>
   </bean>
   
   <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactoryBean">
       <property name="dataSource" ref="dataSource"/>
       <property name="configLocation" value="classpath:mybatis-config.xml"/>
       <property name="mapperLocations" value="classpath:com/lt/dao/UserMapper.xml"/>
   </bean>
   
   <bean class="org.mybatis.spring.SqlSessionTemplate" id="sqlSessionTemplate">
       <constructor-arg index="0" ref="sqlSessionFactoryBean"/>
   </bean>

</beans>

四、在resources里配置存放引用类的文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
       https://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">
   <import resource="beans.xml"/>//引入配置文件
   
   
   
   
</beans>

五、创建pojo包并实例化对象

如:

import lombok.Data;

@Data
public class User {
   private int id;
   private String userName;
   private String password;}

六、创建mapper包写接口

import java.util.List;

public interface UserMapper {
   List<User> getUser();
}

七、创建相对应的***Mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
       PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lt.dao.UserMapper">
   
   <select id="getUser" resultType="com.lt.dao.User">
      select * from user
   </select>
</mapper>

   <bean class="com.lt.dao.UserMapperImpl" id="mapper">
       <property name="sqlSessionTemplate" ref="sqlSessionTemplate"/>
   </bean>

八、创建service包并写出对应的实现类并注册

public class UserServiceImpl implements UserMapper {
   private SqlSessionTemplate sqlSessionTemplate;

   public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
       this.sqlSessionTemplate = sqlSessionTemplate;
  }

   public List<User> getUser() {
       UserMapper mapper = sqlSessionTemplate.getMapper(UserMapper.class);
       return mapper.getUser();
  }
}

九、测试

public static void main(String[] args) {
   ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
   UserMapper userMapper =  context.getBean("userMapper", UserMapper.class);
   for (User user : userMapper.getUser()) {
       System.out.println(user);
  }
}

第二种方法

从第八步开始不一样

public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper {
  public List<User> getUser() {
      return getSqlSession().getMapper(UserMapper.class).getUser();
  }
}

<bean class="com.lt.dao.UserMapperImpl2" id="userMapperImpl2">
      <property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
  </bean>

事务管理

需要在配置文件里边加东西

<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="manager">
       <constructor-arg ref="dataSource"/>
   </bean>

   <tx:advice transaction-manager="manager" id="transactionInterceptor">
       <tx:attributes>
           <tx:method name="add" propagation="REQUIRED"/>
           <tx:method name="delet" propagation="REQUIRED"/>
       </tx:attributes>
   </tx:advice>


   <aop:config>
       <aop:pointcut id="ointCut" expression="execution(* com.lt.dao.UserMapper.*(..))"/>
       <aop:advisor advice-ref="transactionInterceptor" pointcut-ref="ointCut"/>
   </aop:config>

 

posted @ 2020-03-22 10:22  坚持_第一天  阅读(497)  评论(0)    收藏  举报