sqlsession为空(mybatis3,spring5)

yrdbyhpb  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(399)

我刚刚创建了一个项目,我正在尝试向mysql插入一个数据。
但在尝试插入行时,sqlsession为null。
我使用'system.out.println'检查sqlsession对象是否自动连接正确。但是我发现sqlsession对象为空。
根上下文.xml

  1. <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
  2. <property name="driverClass" value="com.mysql.cj.jdbc.Driver" />
  3. <property name="url" value="jdbc:mysql://127.0.0.1:3306/test" />
  4. <property name="username" value="root" />
  5. <property name="password" value="ekehd#65" />
  6. </bean>
  7. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  8. <property name="dataSource" ref="dataSource"></property>
  9. <property name="configLocation" value="classpath:/mybatis-config.xml"></property>
  10. </bean>
  11. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  12. <property name="dataSource" ref="dataSource"></property>
  13. </bean>
  14. <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
  15. <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
  16. </bean>

mybatis配置

  1. <!DOCTYPE configuration
  2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  1. <typeAliases>
  2. <typeAlias type="com.myproject.model.User" alias="user" />
  3. </typeAliases>
  4. <mappers>
  5. <mapper resource="com/myproject/mapper/user.xml" />
  6. </mappers>

Map器.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  1. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  2. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  1. <insert id="insertUser" parameterType="user">
  2. insert into web_users
  3. values(#{id}, #{password})
  4. </insert>

dao.java文件

  1. public class UserDao {
  2. @Autowired
  3. private SqlSession session;
  4. public int insertUser(User user) {
  5. System.out.println("session : "+session);
  6. String key = "com.myproject.mapper.user.insertUser";
  7. Map<String, String> map = new HashMap<String, String>();
  8. return session.insert(key, user);
  9. }

}
控制器.java

  1. @RequestMapping(value = "/in", method = RequestMethod.GET)
  2. public String home1(Locale locale, Model model) {
  3. logger.info("Welcome home! The client locale is {}.", locale);
  4. Date date = new Date();
  5. DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
  6. String formattedDate = dateFormat.format(date);
  7. model.addAttribute("serverTime", formattedDate );
  8. System.out.println("@@@@@@@@@@@@@@");
  9. UserDao dao = new UserDao();
  10. User user = new User();
  11. user.setId("idid");
  12. user.setPassword("pwpwpw");
  13. int result = dao.insertUser(user);
  14. //System.out.println("Result " +result);
  15. return "home";
  16. }

和错误日志

  1. java.lang.NullPointerException
  2. at com.myproject.dao.UserDao.insertUser(UserDao.java:23)
  3. at com.myproject.HomeController.home1(HomeController.java:61)
  4. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  5. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  6. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  7. at java.lang.reflect.Method.invoke(Method.java:498)
  8. at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
  9. at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
  10. at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
  11. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877)
  12. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783)
  13. at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
  14. at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
  15. at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
  16. at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
  17. at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866)
  18. at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
  19. at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
  20. at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
  21. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
  22. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
  23. at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
  24. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
  25. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
  26. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
  27. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
  28. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
  29. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
  30. at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
  31. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
  32. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
  33. at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
  34. at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
  35. at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
  36. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  37. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
  38. at org.apache.tomcat.util.threads.TaskThrea
wn9m85ua

wn9m85ua1#

我认为你不需要注射 sqlSession 插入数据。你可以用 org.mybatis.spring.mapper.MapperScannerConfigurer 扫描所有Map器接口。然后可以调用Map器中的方法来插入数据。
这是我的Spring配置

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:mvc="http://www.springframework.org/schema/mvc"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context.xsd
  9. http://www.springframework.org/schema/mvc
  10. http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  11. <context:component-scan base-package="com.henryxi"/>
  12. <mvc:annotation-driven/>
  13. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  14. <property name="dataSource" ref="dataSource"/>
  15. <property name="configLocation" value="classpath:mybatis.xml"/>
  16. </bean>
  17. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  18. <property name="basePackage" value="com.henryxi.mapper"/>
  19. </bean>
  20. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  21. <property name="driverClassName" value="com.mysql.jdbc.Driver">
  22. </property>
  23. <property name="url" value="jdbc:mysql://192.168.56.6:3306/test_db"/>
  24. <property name="username" value="root"/>
  25. <property name="password" value="123456"/>
  26. </bean>

然后是mybatis配置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//ibatis.apache.org//DTD Config 3.1//EN"
  4. "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
  5. <configuration>
  6. <properties>
  7. <property name="dialect" value="mysql"/>
  8. </properties>
  9. </configuration>

对于整个项目,您可以看到mybatis spring示例

展开查看全部

相关问题