xmtrock
发布于 2021-04-22 / 240 阅读
0

springmvc整合mybatis

1. 引入依赖

spring-jdbc, mybatis, druid, mysql-connector-java, mybatis-spring

2. 创建db.properties

db.username=root
db.password=123456
db.url=jdbc:mysql://localhost:3306/meeting?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8

3. applicationContext.xml

<context:property-placeholder location="classpath:db.properties"/>
<bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
    <property name="username" value="${db.username}"/>
    <property name="password" value="${db.password}"/>
    <property name="url" value="${db.url}"/>
</bean>

<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="typeAliasesPackage" value="com.javaboy.meeting.entity"/>
    <property name="mapperLocations" value="classpath*:com/javaboy/meeting/mapper/*Mapper.xml"/>
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" id="mapperScannerConfigurer">
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
    <property name="basePackage" value="com.javaboy.meeting.mapper"/>
</bean>

注意mapperlocation最好放在包下, 而不是resource下

4. 避免mybaits被忽略掉, 所以pom.xml下配置一下

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>

5. entity包里创建对应的bean类, 设置getter setter tostring

6. mapper接口类, controller类, service类

7. Controller里注入Service --> Service里注入Mapper --> Mapper.xml里写对应查询

@RestController
public class DepartmentController {
    @Autowired
    DepartmentService departmentService;

    @GetMapping("/dep")
    public void getDepById(Integer id) {
        Department department = departmentService.getDepById(id);
        System.out.println(department);
    }
}
@Service
public class DepartmentService {
    @Autowired
    DepartmentMapper departmentMapper;

    public Department getDepById(Integer id) {
        return departmentMapper.getDepById(id);
    }
}
public interface DepartmentMapper {
    Department getDepById(Integer id);
}
<mapper namespace="com.javaboy.meeting.mapper.DepartmentMapper">
    <select id="getDepById" resultType="com.javaboy.meeting.entity.Department">
        select *
        from department
        where departmentid = #{id}
    </select>
</mapper>

开启事务

1. 引入依赖

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.2</version>
</dependency>

2. applicationContext.xml

<!--  事务的配置  -->
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="add*"/>
        <tx:method name="insert*"/>
        <tx:method name="update*"/>
        <tx:method name="delete*"/>
    </tx:attributes>
</tx:advice>

<aop:config>
    <aop:pointcut id="pc1" expression="execution(* com.javaboy.meeting.service.*.*(..))"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="pc1"/>
</aop:config>