目录

- package com.superdemo.dao;
-
- import com.superdemo.domain.Account;
- import org.apache.ibatis.annotations.Delete;
- import org.apache.ibatis.annotations.Insert;
- import org.apache.ibatis.annotations.Select;
- import org.apache.ibatis.annotations.Update;
-
- import java.util.List;
-
- public interface AccountDao {
-
- @Insert("INSERT INTO account(name, money) VALUES (#{name},#{money})")
- void save(Account account);
-
- @Delete("DELETE FROM account WHERE id = ${id}")
- void delete(Integer id);
-
- @Update("UPDATE account SET name = #{name},money = #{money} WHERE id = #{id}")
- void update(Account account);
-
- @Select("SELECT * FROM account")
- List
findAll(); -
- @Select("SELECT * FROM account WHERE id = #{id}")
- Account findByid(Integer id);
- }

- package com.superdemo.service.impl;
-
- import com.superdemo.dao.AccountDao;
- import com.superdemo.domain.Account;
- import com.superdemo.service.AccountService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
-
- import java.util.List;
-
- @Service("accountService")
- public class AccountServiceImpl implements AccountService {
-
- @Autowired
- private AccountDao accountDao;
-
- /*public void setAccountDao(AccountDao accountDao) {
- this.accountDao = accountDao;
- }*/
-
- public void save(Account account){
- accountDao.save(account);
- }
-
- public void delete(Integer id){
- accountDao.delete(id);
- }
-
- public void update(Account account){
- accountDao.update(account);
- }
-
- public List
findAll(){ - return accountDao.findAll();
- }
-
- public Account findByid(Integer id){
- return accountDao.findByid(id);
- }
- }

- jdbc.driver=com.mysql.cj.jdbc.Driver
- jdbc.url=jdbc:mysql://localhost:3306/dp1?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useSSL=false
- jdbc.username=root
- jdbc.password=123456

- package com.superdemo.config;
-
- import com.alibaba.druid.pool.DruidDataSource;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
-
- import javax.sql.DataSource;
-
- public class JDBCConfig {
-
- @Value("${jdbc.driver}")
- private String driver;
- @Value("${jdbc.url}")
- private String url;
- @Value("${jdbc.username}")
- private String userName;
- @Value("${jdbc.password}")
- private String password;
-
- @Bean("dataSource")
- public DataSource getDataSource(){
- System.out.println(driver);
- DruidDataSource ds = new DruidDataSource();
- ds.setDriverClassName(driver);
- ds.setUrl(url);
- ds.setUsername(userName);
- ds.setPassword(password);
- return ds;
- }
- }

- package com.superdemo.config;
-
- import org.mybatis.spring.SqlSessionFactoryBean;
- import org.mybatis.spring.mapper.MapperScannerConfigurer;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Bean;
-
- import javax.sql.DataSource;
-
- public class MybatisConfig {
-
- /*
- 对应XML格式下:
- spring整合mybatis后控制的创建连接用的对象
-
-
-
-
- 加载mybatis映射配置的扫描,将其作为spring的bean进行管理
-
-
- */
-
- @Bean
- public SqlSessionFactoryBean getSqlSessionFactoryBean(@Autowired DataSource dataSource){
- SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
- ssfb.setTypeAliasesPackage("com.superdemo.domain");
- ssfb.setDataSource(dataSource);
- return ssfb;
- }
-
- @Bean
- public MapperScannerConfigurer getMapperScannerConfigurer(){
- MapperScannerConfigurer msc = new MapperScannerConfigurer();
- msc.setBasePackage("com.superdemo.dao");
- return msc;
- }
- }

- package com.superdemo.config;
-
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Import;
- import org.springframework.context.annotation.PropertySource;
-
- @Configuration
- @ComponentScan("com.superdemo")
- @PropertySource("classpath:jdbc.properties")
- @Import({JDBCConfig.class, MybatisConfig.class})
- public class SpringConfig {
- }

- import com.superdemo.config.SpringConfig;
- import com.superdemo.domain.Account;
- import com.superdemo.service.AccountService;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.annotation.AnnotationConfigApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
-
- public class App {
- public static void main(String[] args) {
- ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
- AccountService accountService = (AccountService) ctx.getBean("accountService");
- Account ac = accountService.findByid(3);
- System.out.println(ac);
- }
- }

- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>4.13.2version>
- <scope>testscope>
- dependency>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-testartifactId>
- <version>5.3.22version>
- dependency>

- package com.superdemo.service;
-
- import com.superdemo.config.SpringConfig;
- import com.superdemo.domain.Account;
- import org.junit.Assert;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
- import java.util.List;
-
- //设定spring专用的类加载器
- @RunWith(SpringJUnit4ClassRunner.class)
- //设定加载的spring上下文对应的配置
- @ContextConfiguration(classes = SpringConfig.class)
- public class UserServiceTest {
-
- @Autowired
- private AccountService accountService;
-
- @Test
- public void testFindAll(){
- List
list = accountService.findAll(); - Assert.assertEquals(3,list.size());
- }
- }