Mybatis技术(二) MyBatis-Spring

Mybaits为什么要整合Spring?

说白了其实就想使用Spring提供的服务,比如Spring的事务管理、Spring的IOC对Bean进行管理等。



Mybatis怎么整合Spring?

由于目前Spring官方还没有出整合Mybatis的特性,所以这里在Spring框架和MyBatis框架上再添加用于整合的框架“mybatis-spring-1.0.2.jar” (该框架时MyBatis官方自己出的)。



(1)新建一个Web工程,名称为MybatisSpring。



(2)将Spring3.0.3、Mybatis3.0.6、Mybatis-Spring1.0.2、log4j、Oracle驱动和DBCP连接池的JAR包放到Web工程的lib下面,具体的JAR包如下:

classes12.jar     
log4j-1.2.16.jar     
mybatis-3.0.6.jar     
mybatis-spring-1.0.2.jar     
org.springframework.aop-3.0.3.RELEASE.jar     
org.springframework.asm-3.0.3.RELEASE.jar     
org.springframework.aspects-3.0.3.RELEASE.jar     
org.springframework.beans-3.0.3.RELEASE.jar     
org.springframework.context-3.0.3.RELEASE.jar     
org.springframework.context.support-3.0.3.RELEASE.jar     
org.springframework.core-3.0.3.RELEASE.jar     
org.springframework.expression-3.0.3.RELEASE.jar     
org.springframework.jdbc-3.0.3.RELEASE.jar     
org.springframework.transaction-3.0.3.RELEASE.jar     
org.springframework.web-3.0.3.RELEASE.jar     
commons-logging-1.1.1.jar     
commons-dbcp-1.2.jar     
commons-pool-1.4.jar 

(3)在src下面新建log4j.properties文件,该文件的内容如下:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender     
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout     
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] -%m%n     
log4j.logger.com.ibatis=debug     
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug     
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug     
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug     
log4j.logger.java.sql.Connection=debug     
log4j.logger.java.sql.Statement=debug     
log4j.logger.java.sql.PreparedStatement=debug,stdout    

(4)在Oracle数据库执行以下SQL,创建一个USER_INFO的表:

-- Create table     
create table USER_INFO     
(     
  ID          NUMBER(12) not null,     
  NAME        VARCHAR2(50)     
);     
     
--Insert data     
insert into USER_INFO(ID,NAME) values(1,'张三');   

(5)新建一个Java类UserInfo.java,该类的内容如下:

package com.user;     
     
public class UserInfo {     
    private int id;     
    private String name;     
     
    public UserInfo() {     
    }     
     
    public UserInfo(String name) {     
        this(0, name);     
    }     
     
    public UserInfo(int id, String name) {     
        this.id = id;     
        this.name = name;     
    }     
     
    public int getId() {     
        return id;     
    }     
     
    public void setId(int id) {     
        this.id = id;     
    }     
     
    public String getName() {     
        return name;     
    }     
     
    public void setName(String name) {     
        this.name = name;     
    }     
     
    @Override     
    public String toString() {     
        return "ID: " + id + ", Name: " + name;     
    }     
}   

(6)在com.user.sqlmap下面新建UserInfo.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="User">     
    <select id="selectUser" parameterType="int" resultType="UserInfo">     
    <![CDATA[     
        select * from user_info where id = #{id}     
    ]]>     
    </select>     
</mapper>  

(7)在src下面新建mybatis.cfg.xml文件,该文件的内容如下:

<?xml version="1.0" encoding="UTF-8" ?>     
     
<!DOCTYPE configuration PUBLIC      
    "-//mybatis.org//DTD Config 3.0//EN"     
    "http://mybatis.org/dtd/mybatis-3-config.dtd">     
     
<configuration>     
    <typeAliases>     
        <typeAlias alias="UserInfo" type="com.user.UserInfo" />     
    </typeAliases>     
         
    <mappers>     
        <mapper resource="com/user/sqlmap/UserInfo.xml" />     
    </mappers>     
</configuration>    

(8)新建一个Java类UserService.java,该类的内容如下:

package com.user;     
     
import org.mybatis.spring.SqlSessionTemplate;     
     
public class UserService {     
    private SqlSessionTemplate  sqlSession;     
         
    public SqlSessionTemplate getSqlSession() {     
        return sqlSession;     
    }     
     
    public void setSqlSession(SqlSessionTemplate sqlSession) {     
        this.sqlSession = sqlSession;     
    }     
         
    public UserInfo selectUser(){     
          UserInfo user = null;     
          try {     
                          user = (UserInfo) sqlSession.selectOne("User.selectUser", "1");     
                    } catch (Exception e) {     
                          e.printStackTrace();     
                    }     
             
                   return user;     
             }     
}    

(9)在src下面新建applicationContext.xml文件,该文件的内容如下:

<?xml version="1.0" encoding="UTF-8"?>     
<beans xmlns="http://www.springframework.org/schema/beans"     
    default-autowire="byName"     
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">     
     
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">     
        <property name="driverClassName" value="oracle.jdbc.OracleDriver" />     
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:SID" />     
        <property name="username" value="xxxx" />     
        <property name="password" value="xxxx" />     
        <property name="maxActive" value="100"></property>     
        <property name="maxIdle" value="30"></property>     
        <property name="maxWait" value="500"></property>     
        <property name="defaultAutoCommit" value="true"></property>     
    </bean>     
         
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">     
        <property name="configLocation" value="classpath:mybatis.cfg.xml"></property>     
        <property name="dataSource" ref="dataSource" />     
    </bean>     
         
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">     
        <constructor-arg index="0" ref="sqlSessionFactory" />     
    </bean>     
         
    <bean id="userService" class="com.user.UserService">     
       <property name="sqlSession" ref="sqlSessionTemplate" />     
    </bean>     
     
</beans> 

(10)新建一个测试Java类UserInfoTest.java,该类的具体内容如下:

package com.user;     
     
import java.io.IOException;     
     
import org.springframework.context.ApplicationContext;     
import org.springframework.context.support.ClassPathXmlApplicationContext;     
     
     
     
public class UserInfoTest {     
     
    /**   
     * @param args   
     * @throws IOException    
     */     
    public static void main(String[] args) throws IOException {     
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");     
        UserService userService = (UserService)context.getBean("userService");     
        UserInfo userInfo = userService.selectUser();     
        System.out.println(userInfo);     
     
    }     
     
}     
(11)右键UserInfoTest 类,选择Run As Application,运行MyBaits操作数据库。

log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).     
log4j:WARN Please initialize the log4j system properly.     
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.     
2012-02-11 21:13:42,156 DEBUG [java.sql.PreparedStatement] -==>  Executing: select * from user_info where id = ?      
2012-02-11 21:13:42,156 DEBUG [java.sql.PreparedStatement] -==> Parameters: 1(String)     
ID: 1, Name: 张三    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以回答这个问题。MyBatis-Spring-Boot-Starter 是一个 MyBatisSpring Boot 集成的插件,可以方便地在 Spring Boot 项目中使用 MyBatis 进行数据库操作。它提供了自动配置和一些常用的配置选项,使得使用 MyBatis 变得更加简单和便捷。 ### 回答2: MyBatis-Spring-Boot-Starter是一个用于整合MyBatisSpring Boot的工具。它提供了一种方便的方式来配置和使用MyBatis持久化框架,并简化了与Spring Boot的集成过程。 首先,MyBatis-Spring-Boot-Starter支持自动配置。它会根据项目的依赖和配置文件来自动初始化和配置MyBatis,大大减少了手动配置的工作量。只需简单地在配置文件中指定数据库的连接信息和MyBatis的相关配置,就可以轻松地集成MyBatis框架到Spring Boot应用中。 其次,MyBatis-Spring-Boot-Starter还支持事务管理。通过注解的方式,可以很方便地对数据库操作进行事务管理。开发者可以使用@Transactional注解来标记需要进行事务管理的方法,MyBatis-Spring-Boot-Starter会自动为其开启事务并处理事务的提交和回滚。 此外,MyBatis-Spring-Boot-Starter还提供了一些额外的功能,如分页插件、缓存管理等。分页插件可以简化分页查询操作,缓存管理可以提高查询效率。这些功能的开启和配置也是非常简单的,只需在配置文件中进行相应的配置即可。 总而言之,MyBatis-Spring-Boot-Starter是一个极大简化了整合MyBatisSpring Boot的工具,它提供了自动配置、事务管理和其他辅助功能,使开发者可以更加轻松地使用MyBatis作为数据持久化框架,并结合Spring Boot快速构建稳定高效的应用程序。 ### 回答3: mybatis-spring-boot-starter是一个用于集成MyBatisSpring Boot的工具包。它可以极大地简化在Spring Boot项目中使用MyBatis的配置和使用过程。 使用mybatis-spring-boot-starter,我们不再需要手动配置MyBatis的配置文件和数据源等信息。只需要在项目的application.properties(或application.yml)文件中简单配置几个参数,如数据库连接信息、MyBatis的Mapper接口所在的包路径等,就可以自动完成MyBatis的初始化工作。 另外,mybatis-spring-boot-starter还集成了一些常用的功能,方便我们在Spring Boot项目中使用MyBatis。例如,它可以自动扫描并注册Mapper接口,并将其注入到Spring容器中。我们可以直接使用@Autowired注解将Mapper接口注入到我们的服务中,无需手动实例化。 此外,mybatis-spring-boot-starter还提供了一些常见的插件和功能扩展。例如,它支持分页插件、动态SQL插件等,可以方便地对数据库进行操作。同时,它还支持事务管理,保证了数据库操作的一致性和完整性。 总之,mybatis-spring-boot-starter为我们提供了一种更加便捷和高效的方式来集成MyBatisSpring Boot。它减少了我们的配置工作,提高了开发效率,并且提供了一些常用的功能扩展。使用mybatis-spring-boot-starter,我们可以更加专注于业务逻辑的开发,而无需过多关注底层的配置和细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不讲理的胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值