Spring实战4之数据源篇

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


@Configuration
@EnableWebMvc
public 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来获取数据,简单暴力

@Repository
public 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类

@Controller
public 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整合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值