Spring实战4之数据源篇

来源:互联网 发布:云计算的商业模式 编辑:程序博客网 时间:2024/06/05 05:37

一、JDBC配置
(1)引入mysql-connector-java的库
(2)RootConfig 中加入DataSource的配置,这里使用的是Spring的jdbc连接控制器,并配置JdbcTemplate

@Configuration@EnableWebMvcpublic class RootConfig {    @Bean    public DataSource dataSource(){        DriverManagerDataSource ds = new DriverManagerDataSource();        ds.setDriverClassName("com.mysql.jdbc.Driver");        ds.setUrl("jdbc:mysql://localhost:3306/test");        ds.setUsername("root");        ds.setPassword("1");        return ds;    }    @Bean    public JdbcOperations jdbcTemplate(DataSource ds){        return new JdbcTemplate(ds);    }}

(3)在UserRepositoryImpl中使用jdbcOperations来获取数据,简单暴力

@Repositorypublic class UserRepositoryImpl implements UserRepository{    @Autowired    private JdbcOperations jdbcOperations;    public List<User> findAll(){        return jdbcOperations.query("select * from t_user", new RowMapper<User>() {            @Override            public User mapRow(ResultSet resultSet, int i) throws SQLException {                return new User(                        resultSet.getInt("userId"),                        resultSet.getString("name"),                        resultSet.getString("email")                );            }        });    }}

(4)UserRepository接口

public interface UserRepository {    List<User> findAll();}

(5)User类

public class User {    public User(){    }    public User(int userId,String name,String mail){        this.userId = userId;        this.name = name;        this.mail = mail;    }    private int userId;    public int getUserId(){        return this.userId;    }    public void setUserId(int userId){        this.userId = userId;    }    private String name;    public String getName(){        return this.name;    }    public void setName(String name){        this.name = name;    }    private String mail;    public String getMail(){        return this.mail;    }    public void setMail(String mail){        this.mail = mail;    }}

(6)HomeController类

@Controllerpublic class HomeController {    @Autowired    private UserRepository userRepository;    @RequestMapping(value="/",method= RequestMethod.GET)    public String home(){        List<User> users = userRepository.findAll();        for( User user : users ){            System.out.println(user.getName()+","+user.getMail());        }        return "home";    }}

二、Spring4整合MyBatis3
(1)新建MybatisConfig文件

import javax.sql.DataSource;  import org.mybatis.spring.SqlSessionFactoryBean;  import org.mybatis.spring.mapper.MapperScannerConfigurer;  import org.springframework.context.annotation.Bean;  import org.springframework.context.annotation.Configuration;  import org.springframework.jdbc.datasource.DataSourceTransactionManager;  import org.springframework.jdbc.datasource.DriverManagerDataSource;  import org.springframework.transaction.PlatformTransactionManager;  import org.springframework.transaction.annotation.EnableTransactionManagement;  @Configuration  @EnableTransactionManagement  public class MybatisConfig {      @Bean      public DataSource dataSource() {          DriverManagerDataSource dataSource = new DriverManagerDataSource();          dataSource.setUsername("admin");          dataSource.setPassword("admin");          //如果其他数据库换对应的驱动即可          dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");        dataSource.setUrl("jdbc:sqlserver://blog.csdn.net.unix21:3499;DatabaseName=testdb");          return dataSource;      }      @Bean      MapperScannerConfigurer mpperScannnerConfigurer() {          MapperScannerConfigurer msc = new MapperScannerConfigurer();          msc.setSqlSessionFactoryBeanName("sqlSessionFactory");          msc.setBasePackage("com.unix.mapper");//自动扫描mapper包          return msc;      }      @Bean(name = "sqlSessionFactory")      SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) {          SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();          ssfb.setDataSource(dataSource);          ssfb.setTypeAliasesPackage("com.unix.bean");//自动扫描bean包          return ssfb;      }      @Bean      PlatformTransactionManager transactionManager(DataSource dataSource) {          DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();          transactionManager.setDataSource(dataSource);          return transactionManager;      }  }  

(2)新增一个mapper接口

public interface  SchoolMapper {      @Select("select * from School where id =#{id}")      School findById(@Param("id") int id);      @Select("select * from School where Name like '${name}%'")      List<School> findByName(@Param("name") String name);  }  

(3)测试用例

@RunWith(SpringJUnit4ClassRunner.class)  @ContextConfiguration(classes = MybatisConfig.class)  //@TransactionConfiguration(defaultRollback=true)  public class SchoolTest {      @Autowired      private SchoolMapper shoolDao;      @Test      public void findById(){          School shool = shoolDao.findById(1);          Assert.assertNotNull(shool);          System.out.println(shool.getName());             }      @Test      public void findByName(){          List<School> result = shoolDao.findByName("苏州中学");          Assert.assertNotNull(result);          for (School s : result) {          System.out.println(s.getName());          }              }  }  

Mybatis3.x与Spring4.x整合

原创粉丝点击