spring整合mybatis和Junit
•
算法结构
该项目使用spring纯注解方式开发,用配置类取代spring的配置文件
一、导入依赖
整合Junit需要导入spring-test
整合mybatis需要导入spring-jdbc、mybatis-spring
org.springframework
spring-context
5.3.18
com.alibaba
druid
1.2.8
junit
junit
4.13.2
test
org.springframework
spring-test
5.3.19
test
mysql
mysql-connector-java
5.1.48
org.mybatis
mybatis-spring
1.3.1
org.mybatis
mybatis
3.5.7
org.springframework
spring-jdbc
5.3.19
二、创建目录结构
- 配置类
- mapper接口
- service和serviceimpl
- pojo
5.在resource创建jdbc.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis01jdbc.username=rootjdbc.password=root
三、创建spring配置类、mybatis配置类、jdbc配置类
SpringConfig.java
该配置类需要在类上方添加注解@Configuration表名自己是spring的配置类,还需要扫描添加了注解的包,即扫描bean@ComponentScan,以及导入properties配置文件跟别的配置类
@Configuration
@ComponentScan({"com.xs.mapper","com.xs.service"})
@Import({JDBCConfig.class,MyBatisConfig.class})
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {
}
MybatisConfig.java替代了mybatis的配置文件
导入第三方bean只需要在方法上方添加@Bean注解,这样就会将方法的返回值作为一个Bean。如果需要传别的bean的话,只需要在方法中写形参即可。
public class MyBatisConfig {
/**
* 配置sqlSessionFactory
* 设置数据源
* 设置别名
* @param dataSource
* @return
*/
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource);
sqlSessionFactory.setTypeAliasesPackage("com.xs.pojo");
return sqlSessionFactory;
}
/**
* 扫描mapper接口
* @return
*/
@Bean
public MapperScannerConfigurer mapperScanner(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.xs.mapper");
return msc;
}
}
JdbcConfig.java
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
public DataSource dataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(driver);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
return druidDataSource;
}
}
四、创建pojo类和service、serviceimpl、mapper接口
其中需要注意的是serviceImpl中需要引入mapper接口。使用@AutoWire注解引入。这个注解是按类型匹配
Account.java类
public class Account {
private Integer id;
private String name;
private Double money;
get/set方法...
有参无参构造函数...
}
AccountMapper.java
注意:当传入多个参数时,需要添加@Param注解。该注解会用它的值作为传入mybatis’中的参数的值的名称。
@Repository
public interface AccountMapper {
@Select("select * from t_account")
public List accounts();
@Select("select * from t_account where id=#{id}")
public Account findById(Integer id);
@Insert("insert into t_account(name,money) values(#{name},#{money})")
public int addAccount(@Param("name") String name,@Param("money") double money);
@Insert("insert into t_account(name,money) values(#{name},#{money})")
public int addAccount2(Account account);
@Update("update t_account set name=#{name},money=#{money} where id=#{id}")
public int updateAccount(Account account);
@Delete("delete from t_account where id=#{id}")
public int delAccount(Integer id);
}
AccountService.java
public interface AccountService {
// 查询全部
public List accounts();
// 按id查询
public Account findById(Integer id);
// 增
public int addAccount(String name,double money);
// 传入对象
public int addAccount2(Account account);
// 改
public int updateAccount(Account account);
// 删
public int delAccount(Integer id);
}
AccountServiceImpl.java
该类继承了AccountService.java
@Service
public class AccountServiceImpl implements AccountService {
// 注入AccountMapper
@Autowired
public AccountMapper accountMapper;
public List accounts() {
return accountMapper.accounts();
}
public Account findById(Integer id) {
return accountMapper.findById(id);
}
public int addAccount(String name,double money) {
return accountMapper.addAccount(name,money);
}
@Override
public int addAccount2(Account account) {
return accountMapper.addAccount2(account);
}
public int updateAccount(Account account) {
return accountMapper.updateAccount(account);
}
public int delAccount(Integer id) {
return accountMapper.delAccount(id);
}
}
五、进行测试
//设置类运行器
@RunWith(SpringJUnit4ClassRunner.class)
// 设置spring环境对应的配置类
@ContextConfiguration(classes = SpringConfig.class)
public class springMybatisTest {
@Autowired
private AccountService accountService;
// 查询所有
@Test
public void accountsTest(){
List accounts = accountService.accounts();
accounts.forEach(account-> System.out.println(account));
}
// 增加
@Test
public void addAccountTest(){
// int i = accountService.addAccount("卫三",1000);
int i = accountService.addAccount2(new Account(null, "应星决", 20000.0));
System.out.println(i);
}
// 修改
@Test
public void updatrAccountTest(){
Account account = new Account(9,"花花",10000.0);
// account.setMoney(10000.0);
// account.setName("熊二");
int i = accountService.updateAccount(account);
System.out.println(i);
}
// 根据id查询
@Test
public void selAccountTest(){
Account i = accountService.findById(7);
System.out.println(i);
}
// 删
@Test
public void delAccount(){
accountService.delAccount(8);
}
}
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/bc652bc6d4.html
