Spring整合Mybatis(案例演示)

一、依赖

<dependencies>
        <!--spring-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.28</version>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.7</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.16</version>
        </dependency>
        <!--springjdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.28</version>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.28</version>
        </dependency>
    </dependencies>

二、配置

	<!--扫描-->
    <context:component-scan base-package="com.apesource"></context:component-scan>

    <!--数据源-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url" value="jdbc:mysql://localhost:3306/account_db?serverTimezone=GMT"></property>
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
        <property name="username" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>

    <!--sqlSessionFacotyBean-->
    <bean id="factoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!--mybatis主配置文件-->
        <property name="configLocation" value="classpath:mybatis.xml"></property>
    </bean>

    <!--MapperScannerConfigurer-->
    <bean id="configurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.apesource.dao"></property>
    </bean>

数据库
![在这里插入图片描述](https://img-blog.csdnimg.cn/1c453e07084b4c1f9dcdcc858b1ec965.pn

三、类

3.1.POJO

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Account {
    private int aid;
    private String aname;
    private int amoney;


    public Account(String aname, int amoney) {
        this.aname = aname;
        this.amoney = amoney;
    }
}

3.2.DAO

public interface IAccountDao {
    @Insert("insert into account_table(aname,amoney) values (#{aname},#{amoney})")
    public void insert(Account account);
    @Select("select * from account_table")
    public List<Account> showAll();
    @Update("UPDATE account_table SET aname = #{aname},amoney = #{amoney} where aid = #{aid}")
    public void updateAccount(Account account);
    @Select("select * from account_table where aname=#{aname}")
    public Account selectByAname(String aname);
}

3.3.SERVICE

public interface IAccountService {
    public void insert(Account account);

    public List<Account> showAll();

    public void updateAccount(Account account);

    public Account selectByAname(String aname);

    public void transfer(String fromName, String forName, int money);
}

public class AccountServiceImp implements IAccountService {

    @Autowired
    IAccountDao dao;


    @Override
    public void insert(Account account) {
        dao.insert(account);
    }

    @Override
    public List<Account> showAll() {
        return dao.showAll();
    }

    @Override
    public void updateAccount(Account account) {
        dao.updateAccount(account);
    }

    @Override
    public Account selectByAname(String aname) {
        return dao.selectByAname(aname);
    }

    public void transfer(String fromName, String forName, int money) {
            Account fromAccount = dao.selectByAname(fromName);
            Account forAccount = dao.selectByAname(forName);
            fromAccount.setAmoney(fromAccount.getAmoney() - money);
            forAccount.setAmoney(forAccount.getAmoney() + money);
            dao.updateAccount(fromAccount);
            dao.updateAccount(forAccount);

    }
}

3.4.CONTROLLER

public interface IAccountController {
    public void insert(Account account);

    public List<Account> showAll();

    public void updateAccount(Account account);

    public Account selectByAname(String aname);

    public void transfer(String fromName,String forName,int money);
}
@Controller(value = "controller")
public class AccountControllerImp implements IAccountController {
    @Autowired
    IAccountService service;

    @Override
    public void insert(Account account) {
        service.insert(account);
    }

    @Override
    public List<Account> showAll() {
        return service.showAll();
    }

    @Override
    public void updateAccount(Account account) {
        service.updateAccount(account);
    }

    @Override
    public Account selectByAname(String aname) {
        return service.selectByAname(aname);
    }

    @Override
    public void transfer(String fromName, String forName, int money) {
        service.transfer(fromName,forName,money);
    }
}

四、测试

public class Test0 {
    public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext=new AnnotationConfigApplicationContext(ApplicationContext.class);
        IAccountController controller = (IAccountController) applicationContext.getBean("controller");
        List<Account> list = controller.showAll();
        for (Account account : list){
            System.out.println(account);
        }
    }
}

测试结果:在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值