mybatis杂想

版权声明:欢迎技术爱好者前来讨论,转载请标明出处.谢谢 https://blog.csdn.net/qq_42875051 https://blog.csdn.net/qq_42875051/article/details/87363007

sessionmybatis的实现就是对原有的一部分内容进行替换和简化.

首先原有的basedao结构可以被配置文件进行替换掉,配置文件中可以对数据库的连接进行直接的配置.

mybatis中对dao层的实现进行了简化,以往的dao层实现都是通过继承这个借口,进行方法的实现, 现在对于虚拟方法的实现由XML文件进行,XML文件通过命名空间namespace的方法与dao文件建立联系,通过取值dao文件的方法名进行实现,同时, XML文件中可以实现更加方便的SQL编写OGNL语句的书写,通过该语句可以实现更为灵活的SQL连接.

mybatis最后的使用则是:

     // 测试之前的初始化

     @Before

     public void init() throws IOException {

          // 获取mybatis-config.xml 的输入流

          InputStream is =  Resources.getResourceAsStream("mybatis-config.xml");

          // 创建sqlSessionFactory 对象 完成配置文件的读取

          SqlSessionFactory factory = new  SqlSessionFactoryBuilder().build(is);

          // 创建sqlsession

          session = factory.openSession();

     }

在获取了足够的配置文件和前置条件之后,通过 session进行操作:

     // 使用selectOne() 方法进行

     @Test

     public void testGetTotalCount() throws IOException {

          // 参数是mapper 的 namespace + select 的 id

          int count =  session.selectOne("dao.UserMapper.getTotalCount");

          System.out.println("人数是:" + count);

     }

     // 通过getMapper() 方法进行

     @Test

     public void testFindAll() throws IOException {

          UserMapper userdao =  session.getMapper(UserMapper.class);

          // service 调用dao

          List<User> count = userdao.findAll();

          for (User user : count) {

              System.out.println(user.getUserName());

          }

     }

spring对mybatis的整合:

首先对mybatis中的配置文件进行整合,将mybatis的配置文件合并到自己的spring-mybatis.XML文件中

    <bean  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

          <property name="localhost"  value="classpath:db.properties"></property>

     </bean>

    <bean id="dataSource"  class="org.apache.commons.dbcp.BasicDataSource"

        destroy-method="close">

        <property name="driverClassName"  value="com.mysql.jdbc.Driver" />

       <property name="url">

             <value><![CDATA[jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8]]></value>

        </property>

        <!-- property name="url"  value="jdbc:mysql://127.0.0.1:3306/smbms?

                         useUnicode=true&amp;characterEncoding=utf-8" /> -->

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

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

    </bean>

    <!-- 配置SqlSessionFactoryBean -->

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

        <!-- 引用数据源组件 -->

        <property name="dataSource" ref="dataSource" />

        <!-- 引用MyBatis配置文件中的配置 -->

        <property name="configLocation"  value="classpath:mybatis-config.xml" />

         <!-- 配置关联值实体类文件 -->

        <property name="typeAliasesPackage"  value="cn.bdqn.entity"></property>

        <!-- 配置SQL映射文件信息 -->

        <property name="mapperLocations">

            <list>

                <value>classpath:cn/bdqn/dao/*.xml</value>

            </list>

        </property>

    </bean>

这样的话mybatis的配置文件就被spring的配置文件合并了:

连接数据库的关键数据存储在相关的配置文件中db.properties

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8

username=root

password=root

通过以下语句读取配置文件中的数据:

     <bean  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

          <property name="localhost"  value="classpath:db.properties"></property>

     </bean>

进行数据库的连接:

    <bean id="dataSource"  class="org.apache.commons.dbcp.BasicDataSource"

        destroy-method="close">

       <property name="driverClassName"  value="com.mysql.jdbc.Driver" />

       <property name="url">

             <value><![CDATA[jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8]]></value>

        </property>

        <!-- property name="url"  value="jdbc:mysql://127.0.0.1:3306/smbms?

                         useUnicode=true&amp;characterEncoding=utf-8" /> -->

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

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

    </bean>

替代mybatis文件关联dao层文件:

<property name="typeAliasesPackage"  value="cn.bdqn.entity"></property>

最后将mybatis实际运用时的需要建立的sqlsession工厂函数直接在配置中进行了明确:

    <!-- 配置SqlSessionFactoryBean -->

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

        <!-- 引用数据源组件 -->

        <property name="dataSource" ref="dataSource" />

        <!-- 引用MyBatis配置文件中的配置 -->

        <property name="configLocation"  value="classpath:mybatis-config.xml" />

         <!-- 配置关联值实体类文件 -->

        <property name="typeAliasesPackage"  value="cn.bdqn.entity"></property>

        <!-- 配置SQL映射文件信息 -->

        <property name="mapperLocations">

            <list>

                <value>classpath:cn/bdqn/dao/*.xml</value>

            </list>

        </property>

    </bean>

spring中最终就是将mybatis全部吸收了,没有了配置文件,没有了执行时需要进行的sqlsession创建,只保留了最为精华的mapper.xml文件,方法的使用则通过注解的方式进行.

在获取了足够的配置文件和前置条件之后,通过 session进行操作:

     // 使用selectOne() 方法进行

     @Test

     public void testGetTotalCount() throws IOException {

          // 参数是mapper 的 namespace + select 的 id

          int count =  session.selectOne("dao.UserMapper.getTotalCount");

          System.out.println("人数是:" + count);

     }

     // 通过getMapper() 方法进行

     @Test

     public void testFindAll() throws IOException {

          UserMapper userdao =  session.getMapper(UserMapper.class);

          // service 调用dao

          List<User> count = userdao.findAll();

          for (User user : count) {

              System.out.println(user.getUserName());

          }

     }

猜你喜欢

转载自blog.csdn.net/qq_42875051/article/details/87363007