求助,电脑一进游戏就蓝屏怎么回事蓝屏

MyBatis,Spring整合简易教程 - Weirdo - ITeye博客
博客分类:
在实际的项目开发中,我们需要将MyBatis和Spring进行整合,通过Spring 的依赖注入以减少代码的耦合。本文以MyEclipse和MySQL数据库为开发环境简单的讲解一下MyBatis和Spring的整合过程。
首先我们创建一个Java Project,名称任意,然后导入所需要包:, ,
第一步:创建数据库表
在Navicat下执行如下sql命令创建表User.
CREATE TABLE user
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(20) NOT NULL,
password varchar(20) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
然后插入测试数据
INSERT INTO user VALUES ('1', 'admin', 'admin');
第二步:创建model
创建一个model包并在其下创建一个User.java文件。
public class User {
public User(){
public int getId() {
public void setId(int id) {
public String getUsername() {
public void setUsername(String username) {
this.username =
public String getPassword() {
public void setPassword(String password) {
this.password =
public String toString(){
return "User [id = "+ id +" , username = "+ username +"]" + " , password = "+
第三步:创建DAO接口(这里我们对增删改查进行简单的实现)
创建一个包dao,并在其下创建一个UserMapper.java文件作为DAO接口。
import model.U
public interface UserMapper {
public User selectUser(User user);
public void insertUser(User user);
public void updateUser(User user);
public void deleteUser(int userId);
第四步:实现DAO接口
在dao包下创建一个UserMapper.xml文件作为上一步创建的DAO接口的实现。
&?xml version="1.0" encoding="UTF-8"?&
&!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"&
&mapper namespace="dao.UserMapper"&
&select id="selectUser" parameterType="model.User" resultType="model.User"&
SELECT * FROM user WHERE username=#{username} AND password=#{password}
&insert id="insertUser" parameterType="model.User" flushCache="true"&
INSERT INTO user (id,username,password) VALUES (#{id},#{username},#{password})
&update id="updateUser" parameterType="model.User"&
UPDATE user SET password=#{password} WHERE id=#{id}
&delete id="deleteUser" parameterType="int"&
DELETE FROM user WHERE id=#{userId}
&/mapper&
这里对这个xml文件作几点说明:
1. namespace要指定为接口的类路径。
2. select,insert,update,delete的id必须要和UserMapper.java接口中的方法同名。
第五步:创建MyBatis的配置文件
在src下创建一个mybatis-config.xml文件,由于我们的数据源部分是要交给Spring管理,所以此处的配置文件只包含xml映射文件的位置信息。
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE configuration PUBLIC
"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"&
&configuration&
&mapper resource="dao/UserMapper.xml"/&
&/mappers&
&/configuration&
第六步:在Spring中配置数据源
在src下创建一个ApplicationContext.xml文件作为Spring的配置文件,这里我们使用Spring自带的Jdbc数据源,读者可以根据实际需要替换为其他数据源。
&?xml version="1.0" encoding="UTF-8"?&
xmlns="http://www.springframework.org/schema/beans"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"&
&!—配置数据源--&
&bean id="jdbcDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&
&property name="driverClassName"&
&value&org.gjt.mm.mysql.Driver&/value&
&/property&
&property name="url"&
&value&jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&/value&
&/property&
&property name="username"&
&value&root&/value&
&/property&
&property name="password"&
&value&123456&/value&
&/property&
&bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&
&property name="dataSource" ref="jdbcDataSource" /&
&property name="configLocation" value="classpath:mybatis-config.xml"&&/property&
&bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"&
&property name="mapperInterface" value="dao.UserMapper"&&/property&
&property name="sqlSessionFactory" ref="sqlSessionFactory"&&/property&
&/beans&
关于Spring配置的说明:
Spring没有内置的提供对MyBatis的支持,配置sqlSessionFactory和userMapper所需要的class是来自于mybatis-spring-1.1.1.jar。
第七步:测试
在src下创建一个test包,并在其下创建一个test.java文件
import model.U
import org.springframework.context.ApplicationC
import org.springframework.context.support.ClassPathXmlApplicationC
import dao.UserM
public class test {
public static void main(String[] args) {
ApplicationContext ctx=
ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userMapper=(UserMapper)ctx.getBean("userMapper");
User u=new User();
u.setUsername("admin");
u.setPassword("admin");
System.out.println(userMapper.selectUser(u));
//插入(去掉下面的注释进行调试)
User insertUser=new User();
insertUser.setUsername("testUsername");
insertUser.setPassword("testPassword");
userMapper.insertUser(insertUser);
//更新(去掉下面的注释进行调试)
u.setId(1);
u.setPassword("updatePassword");
userMapper.updateUser(u);
//删除(去掉下面的注释进行调试)
userMapper.deleteUser(9);
下载次数: 1094
下载次数: 907
下载次数: 621
浏览 35443
大神,问一下,如果不是测试,是实际开发中需要分层,那么impl应该怎么写,impl类里面也是用ApplicationContext来访问数据库么Spring的注入不知道吗?在Dao里面注入userMapper操作数据库就好了啊。
您好,我根据您的这篇文章搭建好了环境,可以查询和插入,修改数据了,这里想请教一下,文章中只是说了如何查询一条user数据,如果要返回表中的所有用户的话,该怎么实现?如何返回List或者Map?多谢还是这个例子的环境,举个简单的例子说明一下:第一步:DAO接口(UserMapper.java)中增加下面这个方法:
public List&User& findUsers();
第二步:在UserMapper.xml里增加如下的SQL语句映射:
&select id="findUsers" resultType="model.User"&
SELECT * FROM user
第三步:最后在测试的main方法里按照如下来取得查询出来的List
List&User& users = userMapper.findUsers();
浏览: 101872 次
来自: 昆明
赞一个,基础不好的都学会了,么么
w6889037 写道大神,问一下,如果不是测试,是实际开发中 ...
大神,问一下,如果不是测试,是实际开发中需要分层,那么impl ...
lineNumber: 14; columnNumber: 3 ...
不错了,要我自己写还真想不到Java学习笔记(19)
整合环境:
spring:4.2.4.RELEASE
mybatis:3.3.0
由于整合过程遇到很多问题,故在此记录整合配置,方便下次查阅,希望对各位同学有参考价值。
&?xml version=&1.0& encoding=&UTF-8&?&
&beans xmlns=&http://www.springframework.org/schema/beans&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xmlns:tx=&http://www.springframework.org/schema/tx&
xmlns:context=&http://www.springframework.org/schema/context&
default-autowire=&byName& default-lazy-init=&true&
xmlns:aop=&http://www.springframework.org/schema/aop&
xmlns:cache=&http://www.springframework.org/schema/cache&
xsi:schemaLocation=&http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd&&
&!-- 启用注解 --&
&context:annotation-config /&
&!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 --&
&context:component-scan base-package=&com.wy2.work&&
&!-- &context:exclude-filter type=&regex& expression=&com.wy2.work.web.*& /& --&
&context:exclude-filter type=&annotation& expression=&org.springframework.stereotype.Controller& /&
&/context:component-scan&
&!-- 属性配置 --&
&bean id=&propertyConfigurer& class=&org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&&
&property name=&ignoreResourceNotFound& value=&true&&&/property&
&property name=&ignoreUnresolvablePlaceholders& value=&true&&&/property&
&property name=&systemPropertiesMode& value=&OVERRIDE&&&/property&
&property name=&locations&&
&value&classpath:webconfig.properties&/value&
&value&classpath:dbconfig.properties&/value&
&/property&
&!-- 配置事务管理器 --&
&bean id=&txManager&
class=&org.springframework.jdbc.datasource.DataSourceTransactionManager&&
&property name=&dataSource& ref=&dataSource&&&/property&
&!-- 定义个通知,指定事务管理器 --&
&tx:advice id=&txAdvice& transaction-manager=&txManager&&
&tx:attributes&
&tx:method name=&delete*& propagation=&REQUIRED& read-only=&false&
rollback-for=&java.lang.Exception& /&
&tx:method name=&save*& propagation=&REQUIRED& read-only=&false&
rollback-for=&java.lang.Exception& /&
&tx:method name=&insert*& propagation=&REQUIRED& read-only=&false&
rollback-for=&java.lang.Exception& /&
&tx:method name=&update*& propagation=&REQUIRED& read-only=&false&
rollback-for=&java.lang.Exception& /&
&tx:method name=&load*& propagation=&SUPPORTS& read-only=&true&/&
&tx:method name=&find*& propagation=&SUPPORTS& read-only=&true&/&
&tx:method name=&search*& propagation=&SUPPORTS& read-only=&true&/&
&tx:method name=&select*& propagation=&SUPPORTS& read-only=&true&/&
&tx:method name=&get*& propagation=&SUPPORTS& read-only=&true&/&
&/tx:attributes&
&/tx:advice&
&aop:config&
&!-- 配置一个切入点 --&
&aop:pointcut id=&serviceMethods& expression=&execution(* com.wy2.work.serviceimpl.*ServiceImpl.*(..))& /&
&aop:advisor advice-ref=&txAdvice& pointcut-ref=&serviceMethods& /&
&/aop:config&
&!-- 配置数据源, 整合其他框架, 事务等. --&
&!-- 阿里 druid数据库连接池 --&
&bean id=&dataSource& class=&com.alibaba.druid.pool.DruidDataSource& destroy-method=&close&&
&!-- 数据库基本信息配置 --&
&property name=&url& value=&${url}& /&
&property name=&username& value=&${username}& /&
&property name=&password& value=&${password}& /&
&property name=&driverClassName& value=&${driverClassName}& /&
&property name=&filters& value=&${filters}& /&
&!-- 最大并发连接数 --&
&property name=&maxActive& value=&${maxActive}& /&
&!-- 初始化连接数量 --&
&property name=&initialSize& value=&${initialSize}& /&
&!-- 配置获取连接等待超时的时间 --&
&property name=&maxWait& value=&${maxWait}& /&
&!-- 最小空闲连接数 --&
&property name=&minIdle& value=&${minIdle}& /&
&!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --&
&property name=&timeBetweenEvictionRunsMillis& value=&${timeBetweenEvictionRunsMillis}& /&
&!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --&
&property name=&minEvictableIdleTimeMillis& value=&${minEvictableIdleTimeMillis}& /&
&property name=&validationQuery& value=&${validationQuery}& /&
&property name=&testWhileIdle& value=&${testWhileIdle}& /&
&property name=&testOnBorrow& value=&${testOnBorrow}& /&
&property name=&testOnReturn& value=&${testOnReturn}& /&
&property name=&maxOpenPreparedStatements& value=&${maxOpenPreparedStatements}& /&
&!-- 打开removeAbandoned功能 --&
&property name=&removeAbandoned& value=&${removeAbandoned}& /&
&!-- 1800秒,也就是30分钟 --&
&property name=&removeAbandonedTimeout& value=&${removeAbandonedTimeout}& /&
&!-- 关闭abanded连接时输出错误日志 --&
&property name=&logAbandoned& value=&${logAbandoned}& /&
&!--Mybatis 配置Session工厂 注意:org.mybatis.spring.SqlSessionFactoryBean 不要用默认名称:sqlSessionFactory --&
&bean id=&sqlSessionFactoryA& class=&org.mybatis.spring.SqlSessionFactoryBean&&
&property name=&dataSource& ref=&dataSource&&&/property&
&!-- 加载mybatis.cfg.xml文件 --&
&property name=&configLocation& value=&classpath:mybatis/mybatis-cfg.xml&&&/property&
&!-- 自动扫描需要定义类别名的包,将包内的JAVA类的类名作为类别名 --&
&!-- &property name=&typeAliasesPackage& value=&com.wy2.work.entities.hibernate&&&/property& --&
&!-- mapper扫描 --&
&property name=&mapperLocations& value=&classpath:mybatis/*/*.xml&&&/property&
&!-- 自动扫描所有的Mapper接口与文件 --&
&bean class=&org.mybatis.spring.mapper.MapperScannerConfigurer&&
&property name=&basePackage& value=&com.wy2.work.mybatisdao&&&/property&
&property name=&sqlSessionFactoryBeanName& value=&sqlSessionFactoryA&&&/property&
&bean id=&sqlSessionTemplate& class=&org.mybatis.spring.SqlSessionTemplate&&
&constructor-arg ref=&sqlSessionFactory& /&
&!-- spring jdbcTemplate --&
&bean id=&jdbcTemplate& class=&org.springframework.jdbc.core.JdbcTemplate&&
&property name=&dataSource& ref=&dataSource& /&
&bean id=&nativeJdbcExtractor&
class=&org.springframework.jdbc.monsDbcpNativeJdbcExtractor&
lazy-init=&true& /&
&bean id=&oracleLobHandler& class=&org.springframework.jdbc.support.lob.OracleLobHandler&
lazy-init=&true&&
&property name=&nativeJdbcExtractor& ref=&nativeJdbcExtractor& /&
&/bean& --&
&!-- 异步线程池 --&
&bean id=&taskExecutor& class=&org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor&&
&property name=&corePoolSize& value=&3& /&
&property name=&maxPoolSize& value=&10& /&
&property name=&queueCapacity& value=&10& /&
&property name=&keepAliveSeconds& value=&300& /&
&property name=&rejectedExecutionHandler&&
&bean class=&java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy& /&
&/property&
&!-- 属性读取器 --&
&bean id=&propertiesManager& class=&com.wy2.core.mons.PropertiesManager&&
&property name=&items&&
&entry key=&file.configId& value=&${file.configId}& /&
&entry key=&userSessionName& value=&${userSessionName}& /&
&entry key=&userInitPassword& value=&${userInitPassword}& /&
&entry key=&manage.pagesize& value=&${manage.pagesize}& /&
&entry key=&productName& value=&${productName}& /&
&entry key=&productVersion& value=&${productVersion}& /&
&entry key=&productAuthor& value=&${productAuthor}& /&
&entry key=&productRelease& value=&${productRelease}& /&
&/property&
&aop:aspectj-autoproxy proxy-target-class=&true&/&
&import resource=&springcache.xml&/&
如果报以下错误,可 能是org.mybatis.spring.SqlSessionFactoryBean的Id使用的sqlSessionFactory,改名就好了。相应要配置扫描器中的bean名称
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [spring-mybatis.xml]: Initializ nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'maxActive'; nested exception is java.lang.NumberFormatException: For input string: &${maxActive}&
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:835)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)
at org.springframework.context.support.ClassPathXmlApplicationContext.&init&(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.&init&(ClassPathXmlApplicationContext.java:93)
at com.cetc.di.db.secretkeydb.test.SecretKeyTest.&init&(SecretKeyTest.java:23)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:195)
at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:244)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:241)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'maxActive'; nested exception is java.lang.NumberFormatException: For input string: &${maxActive}&
at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:596)
at org.springframework.beans.AbstractNestablePropertyAccessor.convertForProperty(AbstractNestablePropertyAccessor.java:603)
at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:204)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1527)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1486)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
... 33 more
Caused by: java.lang.NumberFormatException: For input string: &${maxActive}&
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:569)
at java.lang.Integer.valueOf(Integer.java:766)
at org.springframework.util.NumberUtils.parseNumber(NumberUtils.java:194)
at org.springframework.beans.propertyeditors.CustomNumberEditor.setAsText(CustomNumberEditor.java:113)
at org.springframework.beans.TypeConverterDelegate.doConvertTextValue(TypeConverterDelegate.java:464)
at org.springframework.beans.TypeConverterDelegate.doConvertValue(TypeConverterDelegate.java:437)
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:195)
at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:576)
... 39 more
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:605417次
积分:9128
积分:9128
排名:第1928名
原创:308篇
转载:77篇
评论:101条
(2)(3)(5)(2)(3)(1)(1)(1)(2)(1)(1)(1)(1)(2)(2)(2)(1)(1)(1)(6)(4)(1)(1)(5)(1)(1)(12)(7)(4)(9)(8)(1)(4)(6)(1)(1)(5)(7)(4)(3)(4)(3)(6)(4)(3)(2)(11)(7)(3)(10)(14)(7)(12)(11)(13)(13)(1)(1)(4)(15)(4)(10)(1)(1)(10)(1)(8)(18)(36)(11)(21)}

我要回帖

更多关于 电脑一进游戏就蓝屏怎么回事 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信