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=""/>
<!--是否保留空字段-->
<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=""/>
</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>
 <!-- 数据源 -->  <bean id="druidSource" class="com.alibaba.druid.pool.DruidDataSource"  destroy-method="close">  <!-- 数据库基本信息配置 -->  <property name="url" value="${mysql_url}"/>  <property name="username" value="${mysql_username}"/>  <property name="password" value="${mysql_password}"/>  <property name="driverClassName" value="${mysql_driver}"/>   <property name="filters" value="${druid.filters}"/>  <!-- 最大并发连接数 -->  <property name="maxActive" value="${druid.maxActive}"/>  <!-- 初始化连接数量 -->  <property name="initialSize" value="${druid.initialSize}"/>  <!-- 配置获取连接等待超时的时间 -->  <property name="maxWait" value="${druid.maxWait}"/>  <!-- 最小空闲连接数 -->  <property name="minIdle" value="${druid.minIdle}"/>  <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->  <property name="timeBetweenEvictionRunsMillis"  value="${druid.timeBetweenEvictionRunsMillis}"/>  <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->  <property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}"/>  <property name="validationQuery" value="${druid.validationQuery}"/>  <property name="testWhileIdle" value="${druid.testWhileIdle}"/>  <property name="testOnBorrow" value="${druid.testOnBorrow}"/>  <property name="testOnReturn" value="${druid.testOnReturn}"/>  <property name="maxOpenPreparedStatements" value="${druid.maxOpenPreparedStatements}"/>  <!-- 打开removeAbandoned功能 -->  <property name="removeAbandoned" value="${druid.removeAbandoned}"/>  <!-- 1800秒,也就是30分钟 -->  <property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}"/>  <!-- 关闭abanded连接时输出错误日志 -->  <property name="logAbandoned" value="${druid.logAbandoned}"/>   <property name="queryTimeout" value="${druid.queryTimeout}"/>  </bean>   <!-- spring-mybatis配置 -->  <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">  <property name="dataSource" ref="druidSource"/>  <property name="mapperLocations" value="classpath:mybatis/xml/*.xml"/>  <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>  </bean>   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  <property name="basePackage" value="com.ytud.provider.mybatis.mapper"/>  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>  </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></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-</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" />

ssm+dubbo/zk的更多相关文章

  1. SSM+DUBBO/ZK异常

    1.Could not find resource(mybatis本身不支持通配符,是spring提供的ant匹配法) 2.ClassNotFoundException: org.I0Itec.zkc ...

  2. Dubbo+ZK与Eureka注册中心比较

    Eureka可以很好的应对网络故障导致部分节点失去联系的情况,而不会像zk那样因为选举导致整个集群不可用 dubbo + zk 当向注册中心查询服务注册列表时,可以容忍注册中心返回的是几分钟以前的注册 ...

  3. dubbo zk 分布式服务项目搭建与配置

    1. 项目 jar  -----提供接口 2. 项目 jar  -----接口实现   provider启动zk main方法启动 start applicationContext.xml <b ...

  4. 商城项目(ssm+dubbo+nginx+mysql统合项目)总结(1)

    我不会在这里贴代码和详细步骤什么的,我觉得就算我把它贴出来,你们照着步骤做还是会出很多问题,我推荐你们去看一下黑马的这个视频,我个人感觉很不错,一步一步走下来可以学到很多东西.另外,视频和相关文档的话 ...

  5. dubbo+zk+maven的那点事

    1.服务端建议使用xml方式进行服务暴露,可读性更高: 2.消费端不能直接引入service模块,而是通过引入service-api模块来使用服务端的服务,因为这不是单体应用: 题外话:dubbo是一 ...

  6. 【Dubbo】Dubbo+ZK基础入门以及简单demo

    参考文档: 官方文档:http://dubbo.io/ duboo中文:https://dubbo.gitbooks.io/dubbo-user-book/content/preface/backgr ...

  7. 异常处理_Maven多模块web项目整合ssm+dubbo

    异常如下: [ERROR][org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader. ...

  8. 【分布式系列之dubbo】SSM+Dubbo实战

    对于传统的单一构架,也就是打成的war或者ear包部署在同一个Web容器里的构架,它虽然开发.测试.部署简单,但随着业务的不断发展,维护成本增加,可扩展性差,而且一台Tomcat的并发数在500左右, ...

  9. 商城项目(ssm+dubbo+nginx+mysql统合项目)总结(3)

    我不会在这里贴代码和详细步骤什么的,我觉得就算我把它贴出来,你们照着步骤做还是会出很多问题,我推荐你们去看一下黑马的这个视频,我个人感觉很不错,一步一步走下来可以学到很多东西.另外,视频和相关文档的话 ...

随机推荐

  1. [效果不错] nginx 高并发参数配置及linux内核参数优化,完整的内核优化设置。PHP-FPM高负载解决办法。

    背景:对vps小资源的实践中对,https://justwinit.cn/post/7536/ 的再优化,再实践,再优化,特别是Nginx,PHP,内核: 零)Nginx: error_log /da ...

  2. SQL-SQL基础

    SQL(Structured Query Language)是通用的数据库查询语言,各个数据库厂商均对SQL-92标准做了支持,同一时候各家又再次基础上做了相应扩展,比如oracle的PL/SLQ. ...

  3. zookeeper 客户端

    http://blog.csdn.net/lzy_lizhiyang/article/details/48518731 http://blueyan.iteye.com/blog/2298276 ht ...

  4. Yii2实用基础学习笔记(二):Html助手和Request组件 [ 2.0 版本 ]

    Html助手 1 .在@app\views\test的index.php中: <?php //引入命名空间 use yii\helpers\Html; ?> <?php //[一]表 ...

  5. 阿里云服务器---centos编译安装ffmpeg

    环境 系统环境:CentOS release 6.7 (Final) 需求 编译安装ffmpeg 获取依赖 安装依赖包 yum install -y autoconf automake cmake f ...

  6. horizontalDragMaxWidth:0;就没有水平滚动条了

    jquery.jscrollpane.css JScrollPane工作所必须的基本的CSS样式.jquery.min.jsjQuery作为javascript库必须提前引入.jquery.mouse ...

  7. 问题:今天测试模块一直出现一个问题?module 'subprocess' has no attribute 'Popen'

    原因:我起的名字用了模块本身的名字,这个地方一定要切记

  8. PAT 1062. 最简分数(20)

    一个分数一般写成两个整数相除的形式:N/M,其中M不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母 ...

  9. 忘记apple id如何更新应用?

    最近ytkah的app有很多更新提示,之前注册的apple id好久没登录了,突然提示说登录需要验证安全问题,哪还记得噢,最要命的是邮箱收到的加密邮件也需要验证.重新注册一个吧,这次要注意保存相关信息 ...

  10. oracle 查询重复数据并且删除, 只保留一条数据重复数据

    最近面试中都遇到了这样一个数据库题: 删除表中的重复数据,有且只保留一条重复数据. 思路: 1)这个题需要用到rowid,首先找到重复数据的rowid,并找出rowid最大或最小值,作为删除的条件: ...