您的位置:首页 > 移动开发

sqlSession.getMapper(UserMapper.class)的使用方式

2016-09-02 10:10 1911 查看
说明:

1,本文采用的Mybatis框架版本为: mybatis-3.0.4.jar

2, 以持久化一个简单的User bean为例

User实体类的代码如下:

Java代码  


package bean;  

      

   public class User {  

       private String name;  

       private Integer age;  

        

       public String getName() {  

          return name;  

       }  

       public void setName(String name) {  

          this.name = name;  

       }  

       public Integer getAge() {  

          return age;  

       }  

       public void setAge(Integer age) {  

          this.age = age;  

       }  

       public User(String name, Integer age) {  

          super();  

          this.name = name;  

          this.age = age;  

       }  

        

       public User() {  

          super();  

       }  //必须要有这个无参构造方法,不然根据UserMapper.xml中的配置,在查询数据库时,将不能反射构造出User实例  

   }   

 

User实体的映射器取名为UserMapper(接口),其代码如下

Java代码  


package Mapper;  

 import bean.User;  

    

 public interface UserMapper {  

     public void insertUser(User user);  

     public User getUser(String name);  

 }   

 

注意,该接口类似于Hibernate中的DAO层接口,唯一不同的是,MyBatis中,只声明该接口就可以,不需要去实现.

UserMapper映射器对应的配置文件如下(相当于Hibernate中的User.hbm.xml,当然这里面不是属性映射字段,而是直接是映射器中各种方法对应的sql语句):

Java代码  


<?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="Mapper.UserMapper">  

   <!-- 这里namespace必须是UserMapper接口的路径,不然要运行的时候要报错 “is not known to the MapperRegistry”-->  

       <insert id="insertUser" parameterType="User">  

          insert into vincent_user(name,age) values(#{name},#{age})  

          <!-- 这里sql结尾不能加分号,否则报“ORA-00911”的错误 -->  

       </insert>  

     

       <!-- 这里的id必须和UserMapper接口中的接口方法名相同,不然运行的时候也要报错 -->  

       <select id="getUser" resultType="User" parameterType="java.lang.String">  

           select * from vincent_user where name=#{name}  

       </select>  

   </mapper>  

 

MyBatis的配置文件这里取名为mybatis-config.xml其配置代码如下(相当与Hibernate的hibernate.cfg.xml):

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>  

        <settings>  

            <!-- changes from the defaults for testing -->  

            <setting name="cacheEnabled" value="false" />  

            <setting name="useGeneratedKeys" value="true" />  

            <setting name="defaultExecutorType" value="REUSE" />  

        </settings>  

        <typeAliases>  

           <typeAlias alias="User" type="bean.User"/>  

        </typeAliases>  

        <environments default="development">  

           <environment id="development">  

               <transactionManager type="jdbc"/>  

               <dataSource type="POOLED">  

                  <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>  

                  <property name="url" value="jdbc:oracle:thin:@192.168.56.201:1521:system"/>  

                  <property name="username" value="vincent"/>  

                  <property name="password" value="1234"/>  

               </dataSource>  

           </environment>  

        </environments>  

        <mappers>  

            <mapper resource="resource/UserMapper.xml" />  

        </mappers>  

    </configuration>   

 

加载配置文件得到sqlSessionFactory的工具类

Java代码  


package Util;  

       

    import java.io.IOException;  

    import java.io.Reader;  

       

    import org.apache.ibatis.io.Resources;  

    import org.apache.ibatis.session.SqlSessionFactory;  

    import org.apache.ibatis.session.SqlSessionFactoryBuilder;  

       

    public class MyBatisUtil  {  

        private  final static SqlSessionFactory sqlSessionFactory;  

        static {  

           String resource = "resource/mybatis-config.xml";  

           Reader reader = null;  

           try {  

               reader = Resources.getResourceAsReader(resource);  

           } catch (IOException e) {  

               System.out.println(e.getMessage());  

                

           }  

           sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);  

        }  

         

        public static SqlSessionFactory getSqlSessionFactory() {  

           return sqlSessionFactory;  

        }  

    }  

 

测试代码如下:

Java代码  


package TestMapper;  

   import org.apache.ibatis.session.SqlSession;  

   import org.apache.ibatis.session.SqlSessionFactory;  

   import org.junit.Test;  

      

   public class TestMapper {  

       static SqlSessionFactory sqlSessionFactory = null;  

       static {  

          sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();  

       }  

        

       @Test  

       public void testAdd() {  

          SqlSession sqlSession = sqlSessionFactory.openSession();  

          try {  

              UserMapper userMapper = sqlSession.getMapper(UserMapper.class);  

              User user = new User("tom",new Integer(5));  

              userMapper.insertUser(user);  

              sqlSession.commit();//这里一定要提交,不然数据进不去数据库中  

          } finally {  

              sqlSession.close();  

          }  

       }  

        

       @Test  

       public void getUser() {  

          SqlSession sqlSession = sqlSessionFactory.openSession();  

          try {  

              UserMapper userMapper = sqlSession.getMapper(UserMapper.class);  

              User user = userMapper.getUser("jun");  

              System.out.println("name: "+user.getName()+"|age: "+user.getAge());  

          } finally {  

              sqlSession.close();  

          }  

       }  

      

   }  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐