• MyBatis与Spring框架整合实现对数据库的增删改查


    代码结构

    在这里插入图片描述

    持久化类

    public class MyUser {
        private Integer uid; //主键
        private String uname;
        private String usex;
        
        //setter和getter方法
      
        @Override
        public String toString() {
            return "MyUser{" +
                    "uid=" + uid +
                    ", uname='" + uname + '\'' +
                    ", usex='" + usex + '\'' +
                    '}';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    SQL映射文件UserMapper.xml

    
    DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.mybatis.dao.UserDao">
        
        <select id="selectUserById" parameterType="Integer"
                resultType="com.mybatis.po.MyUser">
            select * from user where uid=#{uid}
        select>
    
        
        <select id="selectAllUser" resultType="com.mybatis.po.MyUser">
            select * from user
        select>
    
        
        <insert id="addUser" parameterType="com.mybatis.po.MyUser">
            insert into user (uname,usex) values (#{uname},#{usex})
        insert>
    
        
        <update id="updateUser" parameterType="com.mybatis.po.MyUser">
            update user set uname=#{uname},usex=#{usex} where uid=#{uid}
        update>
    
        
        <delete id="deleteUser" parameterType="Integer">
            delete from user where uid=#{uid}
        delete>
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    MyBatis核心配置文件mybatis-config.xml

    
    DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <mappers>
            <mapper resource="com/mybatis/mapper/UserMapper.xml"/>
        mappers>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    创建数据访问接口

    @Repository("userDao")
    @Mapper
    /**
     * 使用Spring自动扫描MyBatis的接口并进行装配
     *(Spring中将指定包中所有被@Mapper注解的接口自动装配为MyBatis映射接口)
    */
    public interface UserDao {
        //接口方法对应映射文件UserMapper.xml中的id
        MyUser selectUserById(Integer uid);
        List<MyUser> selectAllUser();
        int addUser(MyUser myUser);
        int updateUser(MyUser myUser);
        int deleteUser(Integer uid);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    创建控制层

    @Controller("userController")
    public class UserController {
        @Autowired
        private UserDao userDao;
        public void test(){
            MyUser auser=userDao.selectUserById(1);
            System.out.println(auser);
            System.out.println("============");
            //添加一个用户
            MyUser addmu=new MyUser();
            addmu.setUname("小强");
            addmu.setUsex("男");
            int add=userDao.addUser(addmu);
            System.out.println("添加了"+add+"条记录!");
            System.out.println("============");
            //修改一个用户
            MyUser updatemu=new MyUser();
            updatemu.setUid(1);
            updatemu.setUname("王五");
            updatemu.setUsex("男");
            int up=userDao.updateUser(updatemu);
            System.out.println("修改了"+up+"条纪录");
            System.out.println("============");
            //删除一个用户
            int dl=userDao.deleteUser(9);
            System.out.println("删除了"+dl+"条记录");
            System.out.println("============");
            //查询所有用户
            List<MyUser> list=userDao.selectAllUser();
            for(MyUser myUser:list){
                System.out.println(myUser);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    创建Spring的配置文件application.xml

    <?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:context="http://www.springframework.org/schema/context"
           xmlns:tx="http://www.springframework.org/schema/tx"
           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">
        <!--指定需要扫描的包(包括子包),使注解生效-->
        <context:component-scan base-package="com.mybatis.dao"/>
        <context:component-scan base-package="com.mybatis.controller"/>
    
        <!--配置数据源-->
        <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/springtest?characterEncoding=utf8"/>
            <property name="username" value="root"/>
            <property name="password" value="123456"/>
            <!--最大连接数-->
            <property name="maxTotal" value="30"/>
            <!--最大空闲数-->
            <property name="maxIdle" value="10"/>
            <!--初始化连接数-->
            <property name="initialSize" value="5"/>
        </bean>
    
        <!--添加事务支持-->
        <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
        <!--开启事务注解-->
        <tx:annotation-driven  transaction-manager="txManager"/>
        <!--配置MyBatis工厂,同时指定数据源,并于MyBatis完美整合-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="configLocation" value="classpath:com/mybatis/mybatis-config.xml"/>
        </bean>
    
        <!--Mapper代理开发,使用Spring自动扫描MyBatis的接口并装配
        (Spring指定包中所有被@Mapper注解标注的接口自动装配为Mybatis的映射接口)
        -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <!--mybatis-spring组件扫描器-->
            <property name="basePackage" value="com.mybatis.dao"/>
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        </bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    测试类

    public class TestController {
        public static void main(String[] args) {
            ApplicationContext appCon=new ClassPathXmlApplicationContext("application.xml");
            UserController uc= (UserController) appCon.getBean("userController");
            uc.test();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    OceanBase 4.2.1 LTS 发版 | 一体化数据库首个长期支持版本
    【C语言刷题】牛客JZ65——不用四则运算作加法
    验收测试的内容和流程有哪些?
    C语言每日一题(11):杨辉三角
    2023华为杯数学建模D题-域碳排放量以及经济、人口、能源消费量的现状分析(如何建立指标和指标体系1,碳排放影响因素详细建模过程)
    node.js原生模块
    流式数据库引擎备受关注,亚信安慧AntDB数据库受邀参加“2023中国PostgreSQL数据库生态大会”
    【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(9 月 8 日论文合集)
    【JavaEE进阶系列 | 从小白到工程师】JavaEE中的枚举类使用介绍
    Redis足足十二题,应该没有人能全对
  • 原文地址:https://blog.csdn.net/weixin_44948424/article/details/128150753