ssm+dubbo/zk
1、原始
Connection conn = null; String url = "jdbc:mysql://localhost:3306/emps?user=root&password=&useUnicode=true&characterEncoding=utf-8"; try { //加载驱动 Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url); //conn=DriverManager.getConnection() String sql = "select * from tm_project where proj_id=1"; PreparedStatement ps = conn.prepareStatement(sql); ResultSet rs = ps.executeQuery("select * from tm_project where proj_id=2"); if (rs.next()) { System.out.println(rs.getString("proj_name")); } } catch (Exception e) { e.printStackTrace(); }
notice:1、没有rs.next不能使用rs.getXXX,报错(SQLException:Before start of result set)
2、mybatis only
①po、mapper.java、mapper.xml
②mybatis-mapper.xml
<settings> <!-- 全局映射器启用缓存 --> <setting name="cacheEnabled" value="true"/> <!-- 查询时,关闭关联对象即时加载以提高性能 --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能 --> <setting name="aggressiveLazyLoading" value="false"/> <!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 --> <setting name="multipleResultSetsEnabled" value="true"/> <!-- 允许使用列标签代替列名 --> <setting name="useColumnLabel" value="true"/> <!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 --> <setting name="useGeneratedKeys" value="true"/> <!-- 给予被嵌套的resultMap以字段-属性的映射支持 --> <setting name="autoMappingBehavior" value="FULL"/> <!-- 对于批量更新操作缓存SQL以提高性能 --> <!-- <setting name="defaultExecutorType" value="BATCH" /> --> <!-- 数据库超过25000秒仍未响应则超时 --> <setting name="defaultStatementTimeout" value="25000"/> <!--是否保留空字段--> <setting name="callSettersOnNulls" value="true"/> <setting name="jdbcTypeForNull" value="NULL" /> </settings> <!-- 别名 --> <typeAliases> <typeAlias type="com.ytud.provider.mybatis.po.Project" alias="project" /> </typeAliases> <!-- 数据库 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <!-- 配置数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db?useUnicode=true"/> <property name="username" value="root"/> <property name="password" value="123"/> </dataSource> </environment> </environments> <!-- mapper映射 --> <mappers> <mapper resource="mybatis\xml\*.xml"></mapper> </mappers>
使用: String resource = "mybatis/mybatis-mapper.xml"; InputStream is = demo02.class.getClassLoader().getResourceAsStream(resource); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); SqlSession session = factory.openSession(); String statement = "com.ytud.provider.mybatis.mapper.ProjectMapper.selectByPrimaryKey"; int del = session.delete(statement); System.out.println(del); Project project = session.selectOne(statement, 2); System.out.println(project.getProjName());
3、mybatis+spring
applicationContext.xml
<!--加载properties文件-->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
2 <!-- 数据源 --> 3 <bean id="druidSource" class="com.alibaba.druid.pool.DruidDataSource" 4 destroy-method="close"> 5 <!-- 数据库基本信息配置 --> 6 <property name="url" value="${mysql_url}"/> 7 <property name="username" value="${mysql_username}"/> 8 <property name="password" value="${mysql_password}"/> 9 <property name="driverClassName" value="${mysql_driver}"/> 10 11 <property name="filters" value="${druid.filters}"/> 12 <!-- 最大并发连接数 --> 13 <property name="maxActive" value="${druid.maxActive}"/> 14 <!-- 初始化连接数量 --> 15 <property name="initialSize" value="${druid.initialSize}"/> 16 <!-- 配置获取连接等待超时的时间 --> 17 <property name="maxWait" value="${druid.maxWait}"/> 18 <!-- 最小空闲连接数 --> 19 <property name="minIdle" value="${druid.minIdle}"/> 20 <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> 21 <property name="timeBetweenEvictionRunsMillis" 22 value="${druid.timeBetweenEvictionRunsMillis}"/> 23 <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> 24 <property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}"/> 25 <property name="validationQuery" value="${druid.validationQuery}"/> 26 <property name="testWhileIdle" value="${druid.testWhileIdle}"/> 27 <property name="testOnBorrow" value="${druid.testOnBorrow}"/> 28 <property name="testOnReturn" value="${druid.testOnReturn}"/> 29 <property name="maxOpenPreparedStatements" value="${druid.maxOpenPreparedStatements}"/> 30 <!-- 打开removeAbandoned功能 --> 31 <property name="removeAbandoned" value="${druid.removeAbandoned}"/> 32 <!-- 1800秒,也就是30分钟 --> 33 <property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}"/> 34 <!-- 关闭abanded连接时输出错误日志 --> 35 <property name="logAbandoned" value="${druid.logAbandoned}"/> 36 37 <property name="queryTimeout" value="${druid.queryTimeout}"/> 38 </bean> 39 40 <!-- spring-mybatis配置 --> 41 <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory"> 42 <property name="dataSource" ref="druidSource"/> 43 <property name="mapperLocations" value="classpath:mybatis/xml/*.xml"/> 44 <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/> 45 </bean> 46 47 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 48 <property name="basePackage" value="com.ytud.provider.mybatis.mapper"/> 49 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> 50 </bean>
<!-- 自动扫描 -->
<context:component-scan base-package="com.ytud.service.impl" />
测试代码:
//JUnit public class test1 { private ProjectApiImpl projectApiImpl; @Before public void before() { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); projectApiImpl = (ProjectApiImpl) ac.getBean("projectApiImpl"); } @Test public void test1() { ProjectModel project = projectApiImpl.getProject(1); System.out.println(project.getProjectName()); } } //spring提供JUnit测试框架 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:applicationContext.xml"}) public class Demo02 { @Resource private ProjectApiImpl projectApiImpl; @Test public void test1() { ProjectModel project = projectApiImpl.getProject(1); System.out.println(project.getProjectName()); } }
4、mybatis+spring+spring mvc
web.xml <!-- 加载Spring容器配置,applicationContext.xml --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 设置Spring容器加载所有的配置文件的路径 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- SpringMVC核心控制器 --> <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 设置要加载的mvc配置文件,多个用","隔开,默认WEB-INF/[servlet-name]-servlet.xml --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:mvc-servlet-config.xml</param-value> </init-param> <!-- 启动容器时初始化servlet --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <!-- 表示哪些请求交给Spring Web MVC处理, "/"是用来定义默认servlet映射的。也可以如"*.html"表示拦截所有以html为扩展名的请求 --> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 全局过滤器 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
mvc-servlet-config.xml
<!-- spring扫描,@Controller --> <context:component-scan base-package="com.ytud.web"/> <!-- 没有jsonConverter,返回字符串出现乱码 --> <bean name="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> <!-- springMVC 3.1 以后使用 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"> </bean> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="jsonConverter"></ref> </list> </property> </bean>
5、mybatis+spring+spring mvc+dubbox
<!-- 自动扫描 -->
<context:component-scan base-package="com.ytud.service.impl" />