`
snoopy7713
  • 浏览: 1124815 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

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

阅读更多

说明:

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

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

User实体类的代码如下:

 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(接口),其代码如下

   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语句):

 <?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 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的工具类

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;
        }
    }

 


测试代码如下:

 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();
           }
        }
     
    }
 

 

分享到:
评论

相关推荐

    weekend:基于 https

    UserMapper userMapper = sqlSession.getMapper(UserMapper.class); Weekend&lt;User&gt; weekend = Weekend.of(User.class); weekend.weekendCriteria() .andIsNull(User::getId) .andBetween(User::getId,0,10) .andIn...

    mybatisIntercept.zip

    DeviceImageRecordEntryMapper mapper = sqlSession.getMapper(DeviceImageRecordEntryMapper.class); List, Object&gt;&gt; list= mapper.getConditionsPage(page , condition , recognitionresult, starttime , ...

    【Spring】总结Spring整合Mybatis的底层原理实现步骤

    sqlSession.getMapper();使用的是JDK的动态代理 使用时 自定注入的条件:要被Spring管理。被Spring管理的对象叫做Bean @Component注解:表示将生成一个Bean 对象和Bean的区别: 1、Bean就是一个Java对象,是Spring...

    UniversalMapper:MyBatis单表CURD通用Mapper

    #MyBatis通用Mapper3 ##极其方便的使用MyBatis单表的增删改改查 ##支持单表操作,不支持通用的多表联合查询 ... CountryMapper mapper = sqlSession.getMapper(CountryMapper.class); //查询全部 List&lt;Country&gt;

    MyBatis3_用户指南(附JavaDB实例)

    从SqlSessionFactory 获取SqlSession....7 探索映射SQL语句....... 8 关于命名空间...9 作用域和生命周期..... 10 Mapper XML配置....11 properties元素12 Settings元素....13 typeAliases元素...... 14 ...

    SQL 事务回滚解决 回滚无效的情况

    SQL 事务回滚解决回滚无效的情况 BEGIN TRY END TRY CAHTH

    SqlSession 创建过程.pdf

    我们都知道 SqlSession 是 MyBatis 执行 SQL 的门面,那么 MyBatis 的 SqlSession 的创建过程是如何的呢?看看这里就知道了!

    mybaitis_first_dao开发和配置文件

    动态代理对象调用sqlSession.selectOne()和sqlSession.selectList()是根据mapper接口方法的返回值决定,如果返回list则调用selectList方法,如果返回单个对象则调用selectOne方法。

    MyBatis User Guide.rar

    MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and...

    新MyBatis教程高手带你练手,玩框架轻松(3.15G)

    MyBatis-001-三层架构.avi ...MyBatis-015-传统dao使用方式.avi MyBatis-016-传统dao执行insert.avi MyBatis-017-传统dao的执行分析.avi MyBatis-018-使用动态代理的条件分析.avi MyBatis-019-动态代理getMapper.

    MyBatis-3-User-Guide-Simplified-Chinese

    从SqlSessionFactory中获取SqlSession....................................................................... 6 探究已映射的SQL语句 ..........................................................................

    mybatis3中文文档

    从SqlSessionFactory中获取SqlSession....................................................................... 6 探究已映射的SQL语句 ..........................................................................

    非常重要的一张图-分析代理dao的执行过程.png

    非常重要的一张图-分析代理dao的执行过程,非常详细的介绍了mybatis动态代理实现Dao过程,无法在写DaoImpl实现类,讲解了Mybatis中使用getMapper()动态代理...解释了为什么可以使用Sqlsession.update()方法,删除数据

    计算机后端-Java-java高手加薪课视频教程05 Mybatis核心api_SqlSession对象应.mp4

    计算机后端-Java-java高手加薪课视频教程05 Mybatis核心api_SqlSession对象应.mp4

    SpringBoot+MyBatis+SqlSession

    该项目应用Springboot框架,MyBatis持久层与Sqlsession映射进行数据查询

    springmybatis

    IUserOperation userOperation=session.getMapper(IUserOperation.class); User user = userOperation.selectUserByID(1); System.out.println(user.getUserAddress()); System.out.println(user.getUserName())...

    非常重要的一张图-分析编写dao实现类Mybatis的执行过程.png

    非常重要的一张图-分析编写dao实现类Mybatis的执行过程,非常详细的介绍了mybatis非代理实现Dao过程,讲解了Mybatis中使用DaoImpl实现持久层Dao的方法。讲解了为什么可以使用Sqlsession.update()方法,删除数据。

    Mybatis框架+Mapper代理

    1.使用Mapper代理方式 定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下 设置SQL映射文件的namespace属性为Mapper接口全限定名 在 Mapper 接口中定义方法,方法名就是SQL映射文件...

    MyBatis中文指南,MyBatis中文帮助文档

    从SqlSessionFactory中获取SqlSession....................................................................... 6 探究已映射的SQL语句 ..........................................................................

Global site tag (gtag.js) - Google Analytics