SpringMyBatis解析1-使用示例

MyBatis使用介绍

 

MyBatis的详细使用介绍  http://www.cnblogs.com/xrq730/category/796495.html

 

建立PO 

public class Person {  
    private String id;  
    private String name;  
//set get 方法、、、  
}  

建立Mapper

mapper是数据库操作的映射文件,也就是我们常说的dao文件。

public interface PersonDao {  
    public List<Person> query();  
    public void save(Person p);  
    public void delete(String id);  
}  

建立配置文件

配置文件主要用于程序中可变性高的设置,Mybatis的配置文件主要存在于configuration.xml中,当然configuration.xml中省略了其他mybatis的配置,例如settings里面的配置等等。

configuration:根元素。

properties:定义配置外在化。

settings:一些全局性的配置。

typeAliases:为一些类定义别名。

typeHandlers:定义类型处理,也就是定义Java类型与数据库中的数据类型之间的转换关系。

objectFactory:用于指定结果集对象的实例是如何创建的。

plugins:MyBatis的插件,插件可以修改MyBatis内部的运行规则。

environments:环境。

environment:配置MyBatis的环境。

transactionManager:事务管理器。

dataSource:数据源。

<?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>    
    <!-- 对事务的管理和连接池的配置 -->    
    <environments default="development">    
        <environment id="development">    
            <transactionManager type="JDBC" />    
            <dataSource type="POOLED">    
                   <property name="driver" value="com.mysql.jdbc.Driver" />  
                   <property name="url" value="jdbc:mysql://localhost:3306/test" />  
                   <property name="username" value="root" />  
                   <property name="password" value="root" />    
            </dataSource>    
        </environment>    
    </environments>    
    <!-- mapping 文件路径配置 -->    
    <mappers>    
        <mapper resource="resource/PersonMapper.xml" />    
    </mappers>    
</configuration>  

建立映射文件

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd" >  
<mapper namespace="net.itaem.dao.PersonDao" >  
 <resultMap id="resultMap" type="net.itaem.po.Person" >  
     <result column="id" property="id" jdbcType="CHAR" />  
    <result column="name" property="name" jdbcType="CHAR" />  
  </resultMap>  
  <!--添加-->   
  <insert id="save"  parameterType="net.itaem.po.Person">  
   insert into person(id,name) value(#{id,jdbcType=CHAR},#{name,jdbcType=CHAR})  
  </insert>  
  <!--查询-->  
  <select id="query"  resultMap="resultMap">  
   select * from person  
  </select>  
  <!--删除-->  
  <delete id="delete" parameterType="java.lang.String">  
   delete from person  where id=#{id,jdbcType=CHAR}  
  </delete>  
</mapper>  

建立测试类

public class Test {  
    public static void main(String[] args) throws Exception {  
        Reader reader=Resources.getResourceAsReader("resource/configuration.xml");  
        SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);  
        SqlSession session=sessionFactory.openSession();  
        PersonDao personDao=session.getMapper(PersonDao.class);  
        Person person=new Person("11","Fighter168");  
        personDao.save(person);  
        //这里一定要提交,不然数据无法插入  
        session.commit();  
        session.close();  
    }  
}  

Spring中使用MyBatis介绍

了解了MyBatis的独立使用过程后,我们再看看它与Spring整合的使用方式,比对之前的示例来找出Spring究竟为我们做了哪些操作来简化程序员的业务开发。由于在上面示例基础上作更改,所以,Person,PersonDao,映射文件保持不变。

创建Spring配置文件

里面主要配置的是数据源,sqlSessionFactory和Dao的信息。

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    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" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="123abc"/> <!-- 连接池启动时候的初始连接数 --> <property name="initialSize" value="10"/> <!-- 最小空闲值 --> <property name="minIdle" value="5"/> <!-- 最大空闲值 --> <property name="maxIdle" value="20"/> <property name="maxWait" value="2000"/> <!-- 连接池最大值 --> <property name="maxActive" value="50"/> <property name="logAbandoned" value="true"/> <property name="removeAbandoned" value="true"/> <property name="removeAbandonedTimeout" value="180"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:/resource/cfg.xml"/> <property name="dataSource" ref="dataSource"/> </bean> <bean id="personDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="net.itaem.dao.PersonDao"/> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> </beans>

看到上面配置personDao,我们单独的使用一个Bean去创建它,也许我们会想到如果我们又几十甚至是几百个dao,那配置就可能很恐怖了,不过,Spring的作者也考虑到了这样的问题,针对这种情况,如果dao很多的情况,其实也是可以采取扫描dao的形式注入spring的。

创建MyBatis配置文件

mybatis的配置文件除了去掉environment标签,其他没啥区别。

<?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>    
    <!-- mapping 文件路径配置 -->    
    <mappers>    
        <mapper resource="resource/PersonMapper.xml" />    
    </mappers>    
</configuration>  

Spring使用MyBatis测试

public class SpringTest {  
    public static void main(String[] args) {  
        ApplicationContext context=new ClassPathXmlApplicationContext("resource/ApplicationContext.xml");  
        PersonDao personDao=(PersonDao) context.getBean("personDao");  
        Person person=new Person("12","Fighter168");  
        personDao.save(person);  
    }  
}  

在Spring中使用MyBatis是相当方便的,不需要我们去管理sqlSessionFactory以及SqlSession的管理,更不需要我们去操作简单的事务。

 

posted @ 2016-11-23 13:25  wade&luffy  阅读(352)  评论(0编辑  收藏  举报