首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >自动连接时sqlSession为null (mybatis3,Spring5)

自动连接时sqlSession为null (mybatis3,Spring5)
EN

Stack Overflow用户
提问于 2018-08-19 06:47:30
回答 1查看 977关注 0票数 0

我刚刚创建了一个项目,正在尝试将数据插入到mysql中。

但在尝试插入行时sqlSession为null。

我使用了'System.out.println‘来检查sqlSession对象是否被正确地自动连接。然而,我发现sqlSession对象是空的。

root-context.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
    <property name="driverClass" value="com.mysql.cj.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://127.0.0.1:3306/test" />
    <property name="username" value="root" />
    <property name="password" value="ekehd#65" />
</bean>



<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="configLocation" value="classpath:/mybatis-config.xml"></property>
</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
</bean>



<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
</bean>

mybatis配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE configuration

  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

  "http://mybatis.org/dtd/mybatis-3-config.dtd">

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<typeAliases>

    <typeAlias type="com.myproject.model.User" alias="user" />

</typeAliases>

<mappers>

    <mapper resource="com/myproject/mapper/user.xml" />

</mappers> 

mapper.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<insert id="insertUser" parameterType="user">
    insert into web_users 
    values(#{id}, #{password})
</insert>

Dao.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class UserDao {

@Autowired
private SqlSession session;


public int insertUser(User user) {
    System.out.println("session : "+session);
    String key = "com.myproject.mapper.user.insertUser";
    Map<String, String> map = new HashMap<String, String>();

    return session.insert(key, user);
}

}

controller.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @RequestMapping(value = "/in", method = RequestMethod.GET)
public String home1(Locale locale, Model model) {
    logger.info("Welcome home! The client locale is {}.", locale);

    Date date = new Date();
    DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

    String formattedDate = dateFormat.format(date);

    model.addAttribute("serverTime", formattedDate );

    System.out.println("@@@@@@@@@@@@@@");
    UserDao dao = new UserDao();
    User user = new User();
    user.setId("idid");
    user.setPassword("pwpwpw");

    int result = dao.insertUser(user);
    //System.out.println("Result " +result);
    return "home";
}

和错误日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java.lang.NullPointerException
at com.myproject.dao.UserDao.insertUser(UserDao.java:23)
at com.myproject.HomeController.home1(HomeController.java:61)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThrea
EN

回答 1

Stack Overflow用户

发布于 2018-08-19 09:53:37

我不认为您需要注入sqlSession来插入数据。您可以使用org.mybatis.spring.mapper.MapperScannerConfigurer扫描所有映射器接口。然后,您可以在映射器中调用该方法来插入数据。

这是我的spring配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:mvc="http://www.springframework.org/schema/mvc"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context.xsd 
   http://www.springframework.org/schema/mvc 
   http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.henryxi"/>
<mvc:annotation-driven/>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configLocation" value="classpath:mybatis.xml"/>
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.henryxi.mapper"/>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver">
    </property>
    <property name="url" value="jdbc:mysql://192.168.56.6:3306/test_db"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
</bean>

然后是mybatis配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration
        PUBLIC "-//ibatis.apache.org//DTD Config 3.1//EN"
        "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
    <configuration>
        <properties>
            <property name="dialect" value="mysql"/>
        </properties>
</configuration>

对于整个项目,您可以看到MyBatis Spring example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51915220

复制
相关文章
找不到应用程序解决办法
我在连学校内网的时候,不能自动跳转到登录的页面,因为有一些默认的配置已经被修改。可能有的人认为不是自己修改的,那么原因也有可能是软件安装的过程中默认设置被修改,也有可能是你不轻易间点错了。不废话了,直接发图:
全栈程序员站长
2022/07/22
1.6K0
找不到应用程序解决办法
pycharmimport时找不到指定文件_pycharm系统找不到指定文件
Error running ‘hello’: Cannot run program “B:\pystudy\venv\Scripts\python.exe” (in directory “\python-study”): CreateProcess error=2, 系统找不到指定的文件。
全栈程序员站长
2022/09/27
5.7K0
pycharmimport时找不到指定文件_pycharm系统找不到指定文件
java找不到jdk文件_java运行时系统找不到指定的文件
学习jni的时候,javac Helloworld.java 生成 Helloworld.class文件以后,调用javah Helloworld提示找不到类文件
全栈程序员站长
2022/11/08
2.7K0
系统提示javac:找不到文件
错误如下图所示: 解决方法如下: 1、首先进入java文件所在的目录 2、进入目录后,再输入javac 文件名.java即可
Java架构师必看
2021/12/21
2.8K0
系统提示javac:找不到文件
SpringBoot之日志文件找不到
做新应用就是这样,会遇到各种问题,昨天刚解决了加载某一个类时候抛出了class is not visible from class loader的问题,今天就有遇到了日志文件找不到的问题,还是和二方库有关的,下面就一一道来。
加多
2018/09/06
1.3K0
SpringBoot之日志文件找不到
找不到applicationContext.xml文件
这个错,意思就是这个文件不存在。我就纳闷了,我写了你说不存在??? 我的解决步骤:         1、清空target文件
chao超的搬运文章
2023/10/15
2660
找不到applicationContext.xml文件
gdb分析core文件找不到源码
如果gdb这个时候告诉你找不到这个带调试信息库的源文件路径,此时给出的路径地址是绝对路径,比如
mingjie
2022/05/12
1.8K0
Maven工程springmvc文件上传成功后找不到文件
我们用springmvc上传文件后 在当前target下就是找不到我们上传的文件和文件夹 可能是我们发布到了Tomcat服务器文件夹下了
暴躁的程序猿
2022/03/23
1.8K0
Maven工程springmvc文件上传成功后找不到文件
Intellij idea run/debug 找不到配置文件
在使用Intellij idea 时,如果配置文件放在project根目录下或者其他位置,往往会出现找不到配置文件的问题,而eclipse却不会出现这种问题。
程序新视界
2022/05/06
5.6K0
Intellij idea run/debug 找不到配置文件
git clone 后的文件找不到在哪?
一般情况下会存放在命令行对应的目录下: win + R > cmd 查看命令行地址:
全栈程序员站长
2022/09/16
11.7K0
git clone 后的文件找不到在哪?
使用 Vue.js 和 JavaScript 在 Web 应用程序中下载 PDF 文件
首先,我们将创建一个 Vue.js 组件,其中包含单击按钮时下载 PDF 文件的必要逻辑。
海拥
2023/05/02
3K0
按“window+E”键出现【找不到应用程序】或【explore.exe找不到】的解决方法
explorer.exe ::{20D04FE0-3AEA-1069-A2D8-08002B30309D},单击“确定”。
宝耶需努力
2022/12/13
3.5K0
按“window+E”键出现【找不到应用程序】或【explore.exe找不到】的解决方法
ssm 找不到配置文件项目结构
所以编译时会忽略resources文件中的配置文件,所以pom.xml的<build>标签中修改为
用户5899361
2020/12/07
1.6K0
ssm 找不到配置文件项目结构
JavaScript、js文件、Node.js、静态文件
JavaScript(简称“JS”) 是一种解释型的脚本语言。广泛用于Web应用开发,对页面事件做出响应。
全栈程序员站长
2022/11/15
6.4K0
WebStorm中关于出现"windows 找不到文件chrome
小白在刚刚接触写网页的时候,兴致冲冲地打开了WebStorm软件,在输入了人生中第一个helloworld之后,期待万分地点击chrome图标希望看到浏览器中显示的结果时,却发现出现了这样的错误:
李才哥
2019/08/08
3.7K0
Windows启动HDFS报错 - 系统找不到文件 hadoop。
Windows 7 环境下启动 HDFS,执行 start-dfs.cmd 出现 系统找不到文件 hadoop。报错信息如下
夹胡碰
2020/10/27
5K0
Windows启动HDFS报错 - 系统找不到文件 hadoop。
NuGet 命令行上传找不到 snupkg 文件
在 NuGet 提供符号 NuGet 库的支持,在默认上传将会同时上传符号库。在 NuGet 上传文件将会默认将 snupkg 符号文件上传
林德熙
2019/12/12
1.9K0
正常访问静态文件,不要找不到静态文件报404 原
使用 / 拦截了所有的请求,会影响到静态资源文件的获取,这样就需要用mvc:default-servlet-handler和mvc:resources来帮住分类完成获取静态资源的责任
wuweixiang
2018/08/14
1.5K0
不会js逆向,你是找不到爬虫工作的!
最后通知一下: 各位老铁请点击阅读原文,填写送书资料,今天下午1点,确定送书名额,下午发快递,除偏远地方外三天内书就到你的手上了!
龙哥
2019/07/17
1.6K0
不会js逆向,你是找不到爬虫工作的!
vmware找不到vmx文件_虚拟机重启后文件丢失
在使用Vmware的过程中,不小心删除了vmx文件,导致Vmware无法启动。经过上网搜查资料,找到解决办法。
全栈程序员站长
2022/11/15
2.2K0

相似问题

找不到js文件

55

找不到Js文件

12

找不到JS文件(404)

22

在构建应用程序时,Pyinstaller找不到.js文件

28

npm找不到js文件

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文