一、两种连接数据库的方式
方式一:
springboot默认配置了(DataSource和sqlsessionfactory)
直接配置文件application.yml
里面写
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/o2odb?serverTimezone=UTC&characterEncoding=utf-8&useSSL=truedriver-class-name: com.mysql.jdbc.Driverusername: rootpassword: root
方式二:
类似springmvc 配置datasource和 sessionfactory,然后 写入一个bean加入到容器。
application.properties里面如下
jdbc.driver=com.mysql.jdbc.Driver jdbc.url= jdbc:mysql://localhost:3306/o2odb?useUnicode=true&characterEncoding=utf8 jdbc.username=root jdbc.password=root
然后新建两个config
import com.mchange.v2.c3p0.ComboPooledDataSource; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import java.beans.PropertyVetoException;@Configuration @MapperScan("com.hy.xx.dao")public class DataSourceConfiguration {@Value("${jdbc.driver}")private String jdbcDriver;@Value("${jdbc.url}")private String jdbcUrl;@Value("${jdbc.username}")private String jdbcUsername;@Value("${jdbc.password}")private String jdbcPassword;@Bean(name = "dataSource")public ComboPooledDataSource createDataSource() throws PropertyVetoException {ComboPooledDataSource dataSource = new ComboPooledDataSource();//dirverdataSource.setDriverClass(jdbcDriver);//urldataSource.setJdbcUrl(jdbcUrl);//usernamedataSource.setUser(jdbcUsername);//passworddataSource.setPassword(jdbcPassword);//在关闭连接之后不会自动的CommitdataSource.setAutoCommitOnClose(false);// dataSource.setAcquireIncrement(5);// dataSource.setAcquireRetryAttempts(30);// dataSource.setAcquireRetryDelay(1000);// dataSource.setInitialPoolSize(10);dataSource.setMinPoolSize(5);// dataSource.setMaxPoolSize(200);// dataSource.setMaxIdleTime(60);//dataSource.setMaxIdleTimeExcessConnections(600);return dataSource;}}
import org.mybatis.spring.SqlSessionFactoryBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource; import java.io.IOException;@Configuration public class SessionFactoryConfiguration {@Autowiredprivate DataSource dataSource;@Bean(name="sqlSessionFactory")public SqlSessionFactoryBean createSqlSessionFactoryBean() throws IOException{SqlSessionFactoryBean bean = new SqlSessionFactoryBean();//加载主配置文件mybatis-config.xmlbean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));//Mapper扫描路径PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();String packageSearchPath = "classpath*:/mapper/**.xml";bean.setMapperLocations(resolver.getResources(packageSearchPath));//配置实体的包bean.setTypeAliasesPackage("com.hy.oa.model");//dataSourcebean.setDataSource(dataSource);return bean;}}
启动即可。
二、两种和数据库打交道
@RestController public class wenjianversioncontroller {@Autowiredprivate UserDao userDao;@RequestMapping("/wenjianfindall")public String wenjianfindall(){List users = userDao.searchAllUsers();for (User user : users) {System.out.println(user.getId()+"--"+user.getUsername()+""+user.getPassword());}userDao.deleteUserById(2);return "wenjianfindall";}
public interface UserDao {//增int addUser(User user);//删//int deletUser(User user);int deleteUserById(int id);//改int updateUser(User user);//查List searchAllUsers();User searchUserById(int id); }
然后resource里面的mapper里面
select * from user select * from user where id = #{id} insert into user values(#{id},#{username},#{password}) update user set username=#{username},password=#{password} where id=#{id} delete from user where id = #{id}
----------------------------------
方式二:
dao里面直接注解,然后注解里面写sql语句。
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select;import java.util.List; @Mapper public interface UserMapper {@Select("select * from user")List findAll(); }
public class TestController {@Autowiredprivate UserMapper userMapper;@RequestMapping("/findAll")public String findall(){List userList = userMapper.findAll();for(User user : userList){System.out.println(user.getId()+""+user.getUsername()+""+user.getPassword());}return "hello";}}