使用配置文件的Mybatis的步骤
1.Maven导入坐标,然后写配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
2.写一个Main方法加载SqlSessionFactory
//第一步是先加载出SqlSessionFactory
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
3.在Mapper包里面写Mapper接口,完成相应的方法(不需要实现,把对应的方法,参数类型,返回值类型填进去就可以了)
4.写映射文件跟接口方法相对应
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
5.然后获取SqlSession对象,获取Mapper代理对象,执行sql
注:前面这些东西,是在官网上面入门案例拿到的,需要按照自己要求来改哟,后面的也是
我们现在再来看注解开发,也就是spring整合MyBatis怎么整合的
@Configuration
@ComponentScan("扫描路径")
@PropertySource("classpath:配置文件名称")
//导入第三方bean,就是我们需要整合代替Mybatis文件的配置类,以及jdbc的配置类
@Import({JdbcConfig.class,MybatisConfig.class})
public class SpringConfig {
}
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 ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(userName);
ds.setPassword(password);
return ds;
}
}
public class MybatisConfig {
@Bean
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
//给实体类设置别名
sqlSessionFactoryBean .setTypeAliasesPackage("实体类路径");
//加载配置文件
sqlSessionFactoryBean .setDataSource(dataSource);
return sqlSessionFactoryBean ;
}
// 然后就是下面这个类,这个类很重要,有着自动往Mapper接口对象中,注入Mapper代理对象的功能
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer .setBasePackage("Mapper接口路径");
return mapperScannerConfigurer ;
}
}
@Service
public class UserImp implements UserService{
/**这个地方跟上一张代码MapperScannerConfigurer 这个对象来相互映射,会自己往这里注入Mapper代理对象,然后实现他的方法,这是一种多态的做法 */
@Autowired
private UserMapper userMapper;
public void save(User user) {
accountDao.save(user);
}
public void update(User user){
accountDao.update(account);
}
public void delete(Integer id) {
accountDao.delete(id);
}
public UserfindById(Integer id) {
return accountDao.findById(id);
}
public List<User> findAll() {
return userMapper.findAll();
}
}
最后我们写测试方法,来测试一下
public class TestDemo {
public static void main(String[] args) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
//其实这个地方也是多态的做法,这个地方是把实现了UserService接口的类给这个接口对象来接
UserService userService = applicationContext .getBean(UserService.class);
User user = UserService.findById(1);
System.out.println(user);
}
}
运行一下
注:这些地方要按照自己的想法,来修改哦,不要照抄照搬,代码里面有注释的,很清楚,希望能够理解文章的思想,欢迎各位大佬的指正
respect!!!