diff --git a/spring/spring-mybatis-annotation/pom.xml b/spring/spring-mybatis-annotation/pom.xml new file mode 100644 index 0000000..123a941 --- /dev/null +++ b/spring/spring-mybatis-annotation/pom.xml @@ -0,0 +1,95 @@ + + + 4.0.0 + + com.heibaiying + spring-jdbc + 1.0-SNAPSHOT + + 5.1.3.RELEASE + + + + + + org.springframework + spring-context + ${spring-base-version} + + + org.springframework + spring-beans + ${spring-base-version} + + + org.springframework + spring-core + ${spring-base-version} + + + org.springframework + spring-web + ${spring-base-version} + + + org.springframework + spring-webmvc + ${spring-base-version} + + + javax.servlet + javax.servlet-api + 4.0.1 + provided + + + org.projectlombok + lombok + 1.18.4 + provided + + + + org.springframework + spring-jdbc + ${spring-base-version} + + + mysql + mysql-connector-java + 8.0.13 + + + + junit + junit + 4.12 + test + + + org.springframework + spring-test + ${spring-base-version} + test + + + com.oracle + ojdbc6 + 11.2.0.3.0 + + + + org.mybatis + mybatis-spring + 1.3.2 + + + org.mybatis + mybatis + 3.4.6 + + + + \ No newline at end of file diff --git a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/bean/Flow.java b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/bean/Flow.java new file mode 100644 index 0000000..cdebadf --- /dev/null +++ b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/bean/Flow.java @@ -0,0 +1,18 @@ +package com.heibaiying.bean; + +import lombok.Data; + +/** + * @author : heibaiying + * @description : + */ + +@Data +public class Flow { + + private long id; + + private long flowId; + + private long plugId; +} diff --git a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/bean/Relation.java b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/bean/Relation.java new file mode 100644 index 0000000..74adb91 --- /dev/null +++ b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/bean/Relation.java @@ -0,0 +1,16 @@ +package com.heibaiying.bean; + +import lombok.Data; + +/** + * @author : heibaiying + * @description : + */ +@Data +public class Relation { + + private String id; + + private String name; + +} diff --git a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java new file mode 100644 index 0000000..c435553 --- /dev/null +++ b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DataSourceConfig.java @@ -0,0 +1,34 @@ +package com.heibaiying.config; + +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.annotation.Order; + +/** + * @author : heibaiying + * @description : + */ + +@Configuration +@PropertySource(value = "classpath:mysql.properties") +@Data +@NoArgsConstructor +public class DataSourceConfig { + + /** + * 感觉这种注入的方式并不够好 + * 没有spring-boot中使用@ConfigurationProperties(prefix = "config")指定前缀注入的方式优雅 + */ + @Value("${mysql.driverClassName}") + private String driverClassName; + @Value("${mysql.url}") + private String url; + @Value("${mysql.username}") + private String username; + @Value("${mysql.password}") + private String password; + +} diff --git a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java new file mode 100644 index 0000000..7ed14d2 --- /dev/null +++ b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java @@ -0,0 +1,22 @@ +package com.heibaiying.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +/** + * @author : heibaiying + */ + +public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { + + protected Class[] getRootConfigClasses() { + return new Class[0]; + } + + protected Class[] getServletConfigClasses() { + return new Class[]{ServletConfig.class}; + } + + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} diff --git a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/ServletConfig.java b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/ServletConfig.java new file mode 100644 index 0000000..48ffa83 --- /dev/null +++ b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/config/ServletConfig.java @@ -0,0 +1,83 @@ +package com.heibaiying.config; + +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.mapper.MapperScannerConfigurer; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration;; +import org.springframework.context.annotation.DependsOn; +import org.springframework.core.annotation.Order; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.io.IOException; + + +/** + * @author : heibaiying + */ +@Configuration +@EnableTransactionManagement // 开启声明式事务处理 等价于xml中 +@ComponentScan(basePackages = {"com.heibaiying.*"}) +public class ServletConfig implements WebMvcConfigurer { + + @Autowired + private DataSourceConfig sourceConfig; + + /** + * 配置数据源 + */ + @Bean + public DriverManagerDataSource dataSource() { + DriverManagerDataSource dataSource = new DriverManagerDataSource(); + dataSource.setDriverClassName("com.mysql.jdbc.Driver"); + dataSource.setUrl("jdbc:mysql://localhost:3306/mysql"); + dataSource.setUsername("root"); + dataSource.setPassword("root"); + return dataSource; + } + + + /** + * 配置mybatis 会话工厂 + * + * @param dataSource 这个参数的名称需要保持和上面方法名一致 才能自动注入,因为 + * 采用@Bean注解生成的bean 默认采用方法名为名称,当然也可以在使用@Bean时指定name属性 + */ + @Bean + public SqlSessionFactoryBean sessionFactoryBean(DriverManagerDataSource dataSource) throws IOException { + SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); + sessionFactoryBean.setDataSource(dataSource); + PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); + sessionFactoryBean.setMapperLocations(resolver.getResources("classpath*:/mappers/**/*.xml")); + sessionFactoryBean.setConfigLocation(resolver.getResource("classpath:mybatisConfig.xml")); + return sessionFactoryBean; + } + + /** + * 配置mybatis 会话工厂 + */ + @Bean + public MapperScannerConfigurer MapperScannerConfigurer() { + MapperScannerConfigurer configurer = new MapperScannerConfigurer(); + configurer.setSqlSessionFactoryBeanName("sessionFactoryBean"); + configurer.setBasePackage("com.heibaiying.dao"); + return configurer; + } + + /** + * 定义事务管理器 + */ + @Bean + public DataSourceTransactionManager transactionManager() { + DataSourceTransactionManager manager = new DataSourceTransactionManager(); + manager.setDataSource(dataSource()); + return manager; + } + +} diff --git a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/dao/MysqlDao.java b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/dao/MysqlDao.java new file mode 100644 index 0000000..c89e188 --- /dev/null +++ b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/dao/MysqlDao.java @@ -0,0 +1,17 @@ +package com.heibaiying.dao; + +import com.heibaiying.bean.Relation; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @author : heibaiying + * @description : + */ + +@Mapper +public interface MysqlDao { + + List queryById(String id); +} diff --git a/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/dao/OracleDao.java b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/dao/OracleDao.java new file mode 100644 index 0000000..62cbff2 --- /dev/null +++ b/spring/spring-mybatis-annotation/src/main/java/com/heibaiying/dao/OracleDao.java @@ -0,0 +1,16 @@ +package com.heibaiying.dao; + +import com.heibaiying.bean.Flow; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @author : heibaiying + * @description : + */ +@Mapper +public interface OracleDao { + + List queryById(long id); +} diff --git a/spring/spring-mybatis-annotation/src/main/resources/mappers/Flow.xml b/spring/spring-mybatis-annotation/src/main/resources/mappers/Flow.xml new file mode 100644 index 0000000..b2f83a2 --- /dev/null +++ b/spring/spring-mybatis-annotation/src/main/resources/mappers/Flow.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/spring/spring-mybatis-annotation/src/main/resources/mappers/Relation.xml b/spring/spring-mybatis-annotation/src/main/resources/mappers/Relation.xml new file mode 100644 index 0000000..e882900 --- /dev/null +++ b/spring/spring-mybatis-annotation/src/main/resources/mappers/Relation.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/spring/spring-mybatis-annotation/src/main/resources/mybatisConfig.xml b/spring/spring-mybatis-annotation/src/main/resources/mybatisConfig.xml new file mode 100644 index 0000000..d60965c --- /dev/null +++ b/spring/spring-mybatis-annotation/src/main/resources/mybatisConfig.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/spring/spring-mybatis-annotation/src/main/resources/mysql.properties b/spring/spring-mybatis-annotation/src/main/resources/mysql.properties new file mode 100644 index 0000000..e8ab06b --- /dev/null +++ b/spring/spring-mybatis-annotation/src/main/resources/mysql.properties @@ -0,0 +1,5 @@ +# mysql ݿ +mysql.driverClassName=com.mysql.jdbc.Driver +mysql.url=jdbc:mysql://localhost:3306/mysql +mysql.username=root +mysql.password=root diff --git a/spring/spring-mybatis-annotation/src/main/resources/oracle.properties b/spring/spring-mybatis-annotation/src/main/resources/oracle.properties new file mode 100644 index 0000000..d2e0c50 --- /dev/null +++ b/spring/spring-mybatis-annotation/src/main/resources/oracle.properties @@ -0,0 +1,5 @@ +# oracle ݿ +oracle.driverClassName=oracle.jdbc.driver.OracleDriver +oracle.url=jdbc:oracle:thin:@//IPַ:˿ں/ݿʵ +oracle.username=û +oracle.password= \ No newline at end of file diff --git a/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/MysqlDaoTest.java b/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/MysqlDaoTest.java new file mode 100644 index 0000000..99dc047 --- /dev/null +++ b/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/MysqlDaoTest.java @@ -0,0 +1,36 @@ +package com.heibaiying.dao; + +import com.heibaiying.bean.Relation; +import com.heibaiying.config.DataSourceConfig; +import com.heibaiying.config.DispatcherServletInitializer; +import com.heibaiying.config.ServletConfig; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; + +/** + * @author : heibaiying + * @description : + */ + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {DispatcherServletInitializer.class, ServletConfig.class}) +public class MysqlDaoTest { + + @Autowired + private MysqlDao mysqlDao; + + @Test + public void get() { + List relations = mysqlDao.queryById("691"); + if (relations != null) { + for (Relation relation : relations) { + System.out.println(relation.getId() + " " + relation.getName()); + } + } + } +} diff --git a/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/OracleDaoTest.java b/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/OracleDaoTest.java new file mode 100644 index 0000000..38a03d6 --- /dev/null +++ b/spring/spring-mybatis-annotation/src/test/java/com/heibaiying/dao/OracleDaoTest.java @@ -0,0 +1,36 @@ +package com.heibaiying.dao; + +import com.heibaiying.bean.Flow; +import com.heibaiying.config.DataSourceConfig; +import com.heibaiying.config.DispatcherServletInitializer; +import com.heibaiying.config.ServletConfig; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; + +/** + * @author : heibaiying + * @description : + */ + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {DispatcherServletInitializer.class, ServletConfig.class}) +public class OracleDaoTest { + + @Autowired + private OracleDao oracleDao; + + @Test + public void get() { + List flows = oracleDao.queryById(217584603977429772L); + if (flows != null) { + for (Flow flow : flows) { + System.out.println(flow.getId() + " " + flow.getPlugId()); + } + } + } +} diff --git a/spring/spring-mybatis/pom.xml b/spring/spring-mybatis/pom.xml new file mode 100644 index 0000000..123a941 --- /dev/null +++ b/spring/spring-mybatis/pom.xml @@ -0,0 +1,95 @@ + + + 4.0.0 + + com.heibaiying + spring-jdbc + 1.0-SNAPSHOT + + 5.1.3.RELEASE + + + + + + org.springframework + spring-context + ${spring-base-version} + + + org.springframework + spring-beans + ${spring-base-version} + + + org.springframework + spring-core + ${spring-base-version} + + + org.springframework + spring-web + ${spring-base-version} + + + org.springframework + spring-webmvc + ${spring-base-version} + + + javax.servlet + javax.servlet-api + 4.0.1 + provided + + + org.projectlombok + lombok + 1.18.4 + provided + + + + org.springframework + spring-jdbc + ${spring-base-version} + + + mysql + mysql-connector-java + 8.0.13 + + + + junit + junit + 4.12 + test + + + org.springframework + spring-test + ${spring-base-version} + test + + + com.oracle + ojdbc6 + 11.2.0.3.0 + + + + org.mybatis + mybatis-spring + 1.3.2 + + + org.mybatis + mybatis + 3.4.6 + + + + \ No newline at end of file diff --git a/spring/spring-mybatis/src/main/java/com/heibaiying/bean/Flow.java b/spring/spring-mybatis/src/main/java/com/heibaiying/bean/Flow.java new file mode 100644 index 0000000..cdebadf --- /dev/null +++ b/spring/spring-mybatis/src/main/java/com/heibaiying/bean/Flow.java @@ -0,0 +1,18 @@ +package com.heibaiying.bean; + +import lombok.Data; + +/** + * @author : heibaiying + * @description : + */ + +@Data +public class Flow { + + private long id; + + private long flowId; + + private long plugId; +} diff --git a/spring/spring-mybatis/src/main/java/com/heibaiying/bean/Relation.java b/spring/spring-mybatis/src/main/java/com/heibaiying/bean/Relation.java new file mode 100644 index 0000000..74adb91 --- /dev/null +++ b/spring/spring-mybatis/src/main/java/com/heibaiying/bean/Relation.java @@ -0,0 +1,16 @@ +package com.heibaiying.bean; + +import lombok.Data; + +/** + * @author : heibaiying + * @description : + */ +@Data +public class Relation { + + private String id; + + private String name; + +} diff --git a/spring/spring-mybatis/src/main/java/com/heibaiying/dao/MysqlDao.java b/spring/spring-mybatis/src/main/java/com/heibaiying/dao/MysqlDao.java new file mode 100644 index 0000000..f32534e --- /dev/null +++ b/spring/spring-mybatis/src/main/java/com/heibaiying/dao/MysqlDao.java @@ -0,0 +1,18 @@ +package com.heibaiying.dao; + +import com.heibaiying.bean.Relation; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author : heibaiying + * @description : + */ + +@Mapper +public interface MysqlDao { + + List queryById(String id); +} diff --git a/spring/spring-mybatis/src/main/java/com/heibaiying/dao/OracleDao.java b/spring/spring-mybatis/src/main/java/com/heibaiying/dao/OracleDao.java new file mode 100644 index 0000000..2409955 --- /dev/null +++ b/spring/spring-mybatis/src/main/java/com/heibaiying/dao/OracleDao.java @@ -0,0 +1,17 @@ +package com.heibaiying.dao; + +import com.heibaiying.bean.Flow; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author : heibaiying + * @description : + */ +@Mapper +public interface OracleDao { + + List queryById(long id); +} diff --git a/spring/spring-mybatis/src/main/resources/jdbc.properties b/spring/spring-mybatis/src/main/resources/jdbc.properties new file mode 100644 index 0000000..6dadcd3 --- /dev/null +++ b/spring/spring-mybatis/src/main/resources/jdbc.properties @@ -0,0 +1,11 @@ +# mysql ݿ +mysql.driverClassName=com.mysql.jdbc.Driver +mysql.url=jdbc:mysql://localhost:3306/mysql +mysql.username=root +mysql.password=root + +# oracle ݿ +oracle.driverClassName=oracle.jdbc.driver.OracleDriver +oracle.url=jdbc:oracle:thin:@//IPַ:˿ں/ݿʵ +oracle.username=û +oracle.password= \ No newline at end of file diff --git a/spring/spring-mybatis/src/main/resources/mappers/Flow.xml b/spring/spring-mybatis/src/main/resources/mappers/Flow.xml new file mode 100644 index 0000000..b2f83a2 --- /dev/null +++ b/spring/spring-mybatis/src/main/resources/mappers/Flow.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/spring/spring-mybatis/src/main/resources/mappers/Relation.xml b/spring/spring-mybatis/src/main/resources/mappers/Relation.xml new file mode 100644 index 0000000..e882900 --- /dev/null +++ b/spring/spring-mybatis/src/main/resources/mappers/Relation.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/spring/spring-mybatis/src/main/resources/mybatisConfig.xml b/spring/spring-mybatis/src/main/resources/mybatisConfig.xml new file mode 100644 index 0000000..d60965c --- /dev/null +++ b/spring/spring-mybatis/src/main/resources/mybatisConfig.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/spring/spring-mybatis/src/main/resources/springApplication.xml b/spring/spring-mybatis/src/main/resources/springApplication.xml new file mode 100644 index 0000000..a9088a4 --- /dev/null +++ b/spring/spring-mybatis/src/main/resources/springApplication.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring/spring-mybatis/src/main/webapp/WEB-INF/web.xml b/spring/spring-mybatis/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..c5e8f38 --- /dev/null +++ b/spring/spring-mybatis/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,24 @@ + + + + + + springMvc + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath:springApplication.xml + + 1 + + + + springMvc + / + + + \ No newline at end of file diff --git a/spring/spring-mybatis/src/main/webapp/index.jsp b/spring/spring-mybatis/src/main/webapp/index.jsp new file mode 100644 index 0000000..47961e3 --- /dev/null +++ b/spring/spring-mybatis/src/main/webapp/index.jsp @@ -0,0 +1,9 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + index + + + hello Spring ! + + \ No newline at end of file diff --git a/spring/spring-mybatis/src/test/java/com/heibaiying/dao/MysqlDaoTest.java b/spring/spring-mybatis/src/test/java/com/heibaiying/dao/MysqlDaoTest.java new file mode 100644 index 0000000..93324ff --- /dev/null +++ b/spring/spring-mybatis/src/test/java/com/heibaiying/dao/MysqlDaoTest.java @@ -0,0 +1,33 @@ +package com.heibaiying.dao; + +import com.heibaiying.bean.Relation; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; + +/** + * @author : heibaiying + * @description : + */ + +@RunWith(SpringRunner.class) +@ContextConfiguration({"classpath:springApplication.xml"}) +public class MysqlDaoTest { + + @Autowired + private MysqlDao mysqlDao; + + @Test + public void get() { + List relations = mysqlDao.queryById("691"); + if (relations != null) { + for (Relation relation : relations) { + System.out.println(relation.getId() + " " + relation.getName()); + } + } + } +} diff --git a/spring/spring-mybatis/src/test/java/com/heibaiying/dao/OracleDaoTest.java b/spring/spring-mybatis/src/test/java/com/heibaiying/dao/OracleDaoTest.java new file mode 100644 index 0000000..380b141 --- /dev/null +++ b/spring/spring-mybatis/src/test/java/com/heibaiying/dao/OracleDaoTest.java @@ -0,0 +1,33 @@ +package com.heibaiying.dao; + +import com.heibaiying.bean.Flow; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; + +/** + * @author : heibaiying + * @description : + */ + +@RunWith(SpringRunner.class) +@ContextConfiguration({"classpath:springApplication.xml"}) +public class OracleDaoTest { + + @Autowired + private OracleDao oracleDao; + + @Test + public void get() { + List flows = oracleDao.queryById(217584603977429772L); + if (flows != null) { + for (Flow flow : flows) { + System.out.println(flow.getId() + " " + flow.getPlugId()); + } + } + } +}