Mybatis-Spring的整合

1、导入相关依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.softeem</groupId>
    <artifactId>ssm1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>6</source>
                    <target>6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <!-- springIOC-AOP核心依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.4.RELEASE</version>
        </dependency>

        <!-- spring-jdbc/tx jdbc事务管理器-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.3.4.RELEASE</version>
        </dependency>

	<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>4.3.4.RELEASE</version>
            <scope>compile</scope>
        </dependency>

        <!-- aspect依赖-->

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>4.3.4.RELEASE</version>
        </dependency>

        <!-- 单元测试junit-->

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- 基于spring环境单元测试依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.3.4.RELEASE</version>
        </dependency>

        <!-- mysql驱动包-->

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.48</version>
        </dependency>

        <!-- mybatis依赖-->

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>

        <!-- druid 连接池依赖-->

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.20</version>
        </dependency>

        <!-- log4j日志依赖-->

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- mybatis整合spring依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.0</version>
        </dependency>

        <!-- lombok依赖 无需编写setter/getter 构造器 toString equal & hashCode-->

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
        </dependency>
       
	<!--  springMVC依赖 -->

    	<dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-webmvc</artifactId>
             <version>4.3.4.RELEASE</version>
    	</dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.3.4.RELEASE</version>
        </dependency>

<!--  添加servlet依赖  -->

    	<dependency>
      	     <groupId>javax.servlet</groupId>
     	     <artifactId>javax.servlet-api</artifactId>
      	     <version>4.0.1</version>
   	</dependency>

    <!--jsp依赖-->

    	<dependency>
      	     <groupId>javax.servlet.jsp</groupId>
             <artifactId>javax.servlet.jsp-api</artifactId>
             <version>2.3.3</version>
        </dependency>

    </dependencies>

</project>
2、配置spring核心文件 分为注解导入和xml配置2种形式

1.基于xml的配置(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:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">

<!--spring-IOC/AOP,的配置-->

    <!--      驱动注解配置  -->
    <context:annotation-config/>

    <!--    扫描指定的包获取bean组件 -->

    <context:component-scan base-package="com.softeem.ssm2"/>

<!--  配置属性文件读取器  -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

<!--    1 、配置数据源  -->

    <bean id ="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="maxActive" value="${jdbc.maxActive}"/>
        <property name="maxWait" value="${jdbc.maxWait}"/>
    </bean>


<!--    2、配置SqlSessionFactory   就是mybatis的核心配置文件  -->   

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

        <!--     设置数据源   -->
        <property name="dataSource" ref="dataSource" />

        <!--     设置别名   -->
        <property name="typeAliasesPackage" value="com.softeem.ssm2.entity"/>



-------------------------StudentMapper.xml------------------------------

        <!--     设置Mapper接口xml配置文件路径   -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>

-------------------------------------------------------------------------
    </bean>



<!-- 3、配置Mapper扫描  映射器(dao) 2中方式-->

    <!--   一、 -->
    <mybatis:scan base-package="com.softeem.ssm2.dao"/>

    <!--   二、 -->
<!--
    <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <property name="basePackage" value="com.softeem.ssm2.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>
 -->

<!--  4、事物管理   -->
    <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

	<!--  数据源   -->
        <property name="dataSource" ref="dataSource"/>
    </bean>

</beans>

2.基于注解的配置 在类上注解(路劲:config/AppConfig)

@EnableTransactionManagement//开启事物管理
@Configuration


------------- 1、配置dao包接口映射 的注解配置-----------

@MapperScan(basePackages = {"com.softeem.ssm1.dao"}) //设置mapper扫描器   

--------------------------------------------------------

@PropertySource("classpath:jdbc.properties")//设置属性文件加载器
@ComponentScan(basePackages = "com.softeem.ssm1")
public class AppConfig {

    @Value("${driver}")  //将属性文件中属性值更成员变量绑定
    private String driverClassName;
    @Value("${url}")
    private String url;
    @Value("${user}")
    private String user;
    @Value("${password}")
    private String password;
    @Value("${maxActive}")
    private int maxActive;
    @Value("${maxWait}")
    private long maxWait;

    /**
     * 配置数据源
     * 方法名称既bean的id
     * 返回值类型就是bean的类型
     * @return
     */
    @Bean
    public DruidDataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        dataSource.setMaxWait(maxWait);
        dataSource.setMaxActive(maxActive);
        return dataSource;
    }

    /**
     * 配置 SqlSessionFactory
     * @return
     * @throws IOException
     */
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean() throws IOException {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

        //为SqlSessionFactory设置数据源
        bean.setDataSource(dataSource());

        //设置别名
        bean.setTypeAliasesPackage("com.softeem.ssm1.entity");


------------- 2、配置dao包接口映射 的xml文件路劲配置-----------

        //配置映射文件所在位置
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));

----------------------------------------------------------------

        return bean;
    }

    /**
     * 配置事物管理器
     * @return
     */
    @Bean
    public DataSourceTransactionManager transactionManager(){

        return new DataSourceTransactionManager(dataSource());
    }
}
3、配置接口映射 分为注解和xml配置

1、xml配置( 需要在spring核心配置文件配置,2种任选其一)

以StudentMapper.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.softeem.ssm1.dao.IStudentMapper">
    <resultMap id="stuInfo" type="com.softeem.ssm1.entity.Student">
        <id property="sno" column="sno"/>
        <result property="sname" column="sname"/>
        <result property="sbirthday" column="sbirthday"/>
        <association property="dept" column="dno"   javaType="com.softeem.ssm1.entity.Department">
            <id property="dno" column="dno"/>
            <result property="dname" column="dname"/>
            <result property="dtel" column="dtel"/>
            <result column="dsummary" property="dsummary"/>
        </association>
    </resultMap>

    <insert id="insert">
        insert into student(sname,ssex,sbirthday,dno)
        values (#{sname},#{ssex},#{sbirthday},#{dept.dno})
    </insert>
    <select id="selectAll" resultMap="stuInfo">
        select s.sno,s.sname,s.ssex,s.sbirthday,d,dno
        d.dname,d.dtel,d.dsummary
        from student s,department d
        where s.dno = d.dno
    </select>
</mapper>

2、基于注解的配置
以StudentMapper映射的配置

public interface IDepartmentMapper {

    @Insert("insert into department(dept_name,dept_tel,dept_summary) values(#{deptName},#{deptTel},#

{deptSummary})")
    int insert(Department dept);

    @Select("select * from department where dno=#{dno}")
    Department selectById(@Param("dno") Integer id);

    @Select("select * from department")
    List<Department> selectAll();

}
4、在需要调用其他类的对象的类上加上注解(需要注意,只有用注解的配置的才可以,用xml配置的不需要加注解)
@Service //这里调用了IStudentMapper这个类,所以需要加注解,因为在service层,所以是@Service
public class StudentService implements IStudentService {

    private IStudentMapper studentMapper;

    public StudentService(IStudentMapper studentMapper) {
        this.studentMapper = studentMapper;
    }

    //对指定方法注入事务
    @Transactional               *****用注解配置时加的事务管理注解****
    @Override
    public boolean addStudent(Student stu) {
        System.out.println("进入service,准备执行add");
        int i = studentMapper.insert(stu);
        return i > 0;
    }

    @Override
    public List<Student> queryAll() {
        System.out.println("进入sevice,执行查询");
        return studentMapper.selectAll();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值