首页 > 其他分享 >mybatis+spring组合使用

mybatis+spring组合使用

时间:2024-03-29 11:31:15浏览次数:24  
标签:xml ac jdbc 组合 spring userMapper user mybatis

1、mybatis+spring

  1. 配置 applicationContext.xml 数据库使用c3p0 sqlSessionFactory被集成为一个bean

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:tx="http://www.springframework.org/schema/tx" 
        xmlns:aop="http://www.springframework.org/schema/aop" 
        xmlns:context="http://www.springframework.org/schema/context" 
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd 
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop.xsd">
        
        <!-- 引入数据库配置文件 -->
        <context:property-placeholder location="classpath:jdbc.properties"/>
        <!-- 数据源 -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driver}"/>
            <property name="jdbcUrl" value="${jdbc.url}"/>
            <property name="user" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
            <!-- 初始连接池大小  -->
            <property name="initialPoolSize" value="2"/>
            <!-- 连接池中连接最小个数 -->
            <property name="minPoolSize" value="1"/>
            <property name="maxPoolSize" value="5"/>
        </bean> 
        
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
              <property name="dataSource" ref="dataSource"></property>
        </bean>
        <!--扫描mapper 并称为bean-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
              <property name="basePackage" value="com.mapper"></property>
              <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>    
        </bean>
        
      <!-- 配置事务管理 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <!-- 注入数据源  保证了数据库的四大特性-->
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        <!-- 通知 -->     
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <!-- 传播行为 每次调用这些方法都会启动 事务管理  每个在config里配置的方法都要以以下方式开头-->
                <tx:method name="save*" propagation="REQUIRED" />
                <tx:method name="insert*" propagation="REQUIRED" />
                <tx:method name="delete*" propagation="REQUIRED" />
                <tx:method name="update*" propagation="REQUIRED" />
                <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
                <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
            </tx:attributes>
        </tx:advice>
        <!-- 切点 -->
        <aop:config>
            <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.buyerApp.*.*.*.service.*(..))"/>
        </aop:config> <!--每次调用service层的数据库语句都会收到上面各个方法的通知,若代码错误 数据库就会回滚  -->
        
         <bean id="user" class="com.pojo.User"></bean>
    </beans>

  2. 配置数据库连接信息 jdbc.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/buyerapp?characterEncoding=utf-8
    jdbc.username=root
    jdbc.password=123456
    ​
    jdbc.initialPoolSize=5
    jdbc.minPoolSize=1
    jdbc.maxPoolSize=10
  3. 配置逆向工程文件 generator.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration
      PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
      "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    <generatorConfiguration>
     <context id="DB2Tables" targetRuntime="MyBatis3">
     
     
      <commentGenerator>
       <!--
                    suppressAllComments属性值:
                        true:自动生成实体类、SQL映射文件时没有注释
                        false:自动生成实体类、SQL映射文件,并附有注释
                  -->
       <property name="suppressAllComments" value="true" />
      </commentGenerator>
      <!-- 数据库连接信息 -->
      <jdbcConnection driverClass="com.mysql.jdbc.Driver"
       connectionURL="jdbc:mysql://localhost:3306/buyerapp?characterEncoding=UTF-8" 
       userId="root"  password="123456">
      </jdbcConnection>
      <!-- 
                forceBigDecimals属性值: 
                    true:把数据表中的DECIMAL和NUMERIC类型,
    解析为JAVA代码中的java.math.BigDecimal类型 
                    false(默认):把数据表中的DECIMAL和NUMERIC类型,
    解析为解析为JAVA代码中的Integer类型 
            -->
      <javaTypeResolver>
       <property name="forceBigDecimals" value="false" />
      </javaTypeResolver>
       
          <!-- 
                targetProject属性值:实体类pojo的生成位置  
                targetPackage属性值:实体类所在包的路径
            --> 
      <javaModelGenerator targetPackage="com.pojo"
                                 targetProject="Spring-Mybatis/src">
       <!-- trimStrings属性值:
                    true:对数据库的查询结果进行trim操作
                    false(默认):不进行trim操作
                  -->
       <property name="trimStrings" value="true" />
      </javaModelGenerator>
       <!-- 
                targetProject属性值:SQL映射文件的生成位置(写数据库语句类)  
                targetPackage属性值:SQL映射文件所在包的路径(xml)
            -->
       
      <sqlMapGenerator targetPackage="com.mapper" targetProject="Spring-Mybatis/src">
      </sqlMapGenerator>
       
      <!-- 生成动态代理的接口  -->
      <javaClientGenerator type="XMLMAPPER" targetPackage="com.mapper" targetProject="Spring-Mybatis/src">
      </javaClientGenerator>
     
      <!-- 指定数据库表  -->
      <table tableName="admin">
      <property name="useActualColumnNames" value="false"/>
       </table>
          
     </context>
    </generatorConfiguration>
  4. 测试

        public static void main(String[] args) {
            // TODO Auto-generated method stub
              ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
              UserMapper userMapper =  (UserMapper) ac.getBean("userMapper");
              User user = (User)ac.getBean("user");
              user.setUserPhone("123");
              user.setUserPwd("321");
              int result = userMapper.insert(user);
              if (result>0) {
                System.out.println("添加成功");
            }else {
                System.out.println("添加失败");
            }
        }

标签:xml,ac,jdbc,组合,spring,userMapper,user,mybatis
From: https://blog.csdn.net/qq_43905491/article/details/137139492

相关文章

  • Mybatis是如何进行分页的?分页插件的原理是什么?
    Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页,可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执......
  • 如何将几个长度相同的列表并列组合在一起(附:zip函数使用出错原因:巨坑~)
        Python中列表对象使用很方便,用Python编程时,经常会遇到将多个长度相同的列表是针对某一组特定对象的,如何能方便的把这些列表组合起来一起使用呢?ZIP()函数可以方便的解决这个问题。一、将几个长度相同的列表并列组合例如,设置四个列表ID=[1,2,3,4]Name=['小......
  • MybatisPlus多参数分页查询,黑马程序员SpringBoot3+Vue3教程第22集使用MP代替pagehelpe
    前言:视频来源1:黑马程序员SpringBoot3+Vue3全套视频教程,springboot+vue企业级全栈开发从基础、实战到面试一套通关视频来源2:黑马程序员最新MybatisPlus全套视频教程,4小时快速精通mybatis-plus框架创作理由:网上MP实现分页查询功能的帖子易读性太差,具体实现看下面。根据视频完成......
  • 免费分享一套SpringBoot+Vue个人健康管理系统,帅呆了~~
    大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue个人健康管理系统,分享下哈。项目视频演示【免费】SpringBoot+Vue个人健康管理系统Java毕业设计_哔哩哔哩_bilibili【免费】SpringBoot+Vue个人健康管理系统Java毕业设计项目来自互联网,免费开源分享,严禁商业。更多......
  • 网络工程师之路由交换组合配置知识点相关技术方法解析
    网络工程师之路由交换组合配置相关技术方法解析交换机部分配置参数vlanif的配置环回的配置vlanbatch配置允许通过trunk口ospf的配置disospfpeerbdisipconospf带宽:默认100bandwidth-reference10000{所有运行ospf的都改}100/10010000/100备份配置:创......
  • [SpringMVC]知识点
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18032069出自【进步*于辰的博客】目录1、什么是SpringMVC?1.1概述1.2示例6、restful风格6.1概述6.2使用细节7、自定义异常处理器8、自定义类型转换器最后1、什么是Spring......
  • 【毕业设计】基于SpringBoot 和uniapp的食堂点餐系统
    效果源码下载文档一、概述由于互联网的飞速发展,饭店的点餐也要进行时代化的创新,由以前的人工点餐到现在的系统点单,大大减少了人力资源的利用。总体设计图由于互联网的飞速发展,饭店的点餐也要进行时代化的创新,由以前的人工点餐到现在的系统点单,大大减少了......
  • 文件名按数字排序,可以排序多组数字,尤其是99-333~~_222这种复杂数字组合的文件名或字符
    这是我本人编写的一个排序算法,主要就是解决复杂多组数字组合的这种文件名或者字符串的排序,排序主要规则就是从前往后对每一组数据进行排序,效果及截图如下:以下是使用方法:第一步搜索和安装我的Nuget包搜索和安装zmjtool这个包,我写的,如下图:第二步使用HMSorter的Sort方法进行......
  • Java项目:77 springboot母婴商城
    作者主页:源码空间codegym简介:Java领域优质创作者、Java项目、学习资料、技术互助文中获取源码项目介绍本课题后端使用SpringBoot+SpringCloud框架,前端采用html,JQuery,JS,DIV+CSS技术进行编程,设计在线商城。系统具有前台和后台两大服务。前台主要有用户登录注册、浏......
  • Java项目:75 springboot房产销售系统
    作者主页:舒克日记简介:Java领域优质创作者、Java项目、学习资料、技术互助文中获取源码项目介绍使用房产销售系统分为管理员和用户、销售经理三个角色的权限子模块。管理员所能使用的功能主要有:首页、个人中心、用户管理、销售经理管理、房源信息管理、房源类型管理、......