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" />
posted @ 2016-05-19 15:24  琅琊天  阅读(358)  评论(0编辑  收藏  举报