一、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());
}
}
}