Invalid bound statement (not found): com.dk.UserMapper.queryUserByName报错解决方案

Linux部署maven的ssm项目时记录一个特别的踩坑点!!

问题描述:

Invalid bound statement (not found): com.dk.UserMapper.queryUserByName

报错原因分析:

1. mapper接口和mapper.xml文件没有映射起来,运行则会报此错误

2. applicationContext.xml中加载映射文件有没有加*

3. 数据库共享有没有配置%root,供其他人访问

4. XxxMapper.java的方法返回值是List,但是没有正确配置ResultMap,或者只配置ResultType

5. maven的自带打包有问题

解决方案:

        1. 首先在web.xml中配置监听器时多加个*

        

        为了严谨起见,去applicationContext.xml中找加载映射文件和配置properties文件的classpach也去加个*

        2. 因为配置了过滤器,打包的时候无法加载resource下的后缀xml和properties文件,所以需要在pom.xml文件中配置开启过滤

<resources>
      <resource>
            <directory>src/main/resources</directory>
            <includes>
                 <include>**/*.xml</include>
                 <include>**/*.properties</include>
            </includes>
      </resource>
      <resource>
       <!--目录-->
            <directory>src/main/java</directory>
            <includes>
                 <include>**/*.xml</include>
                 <include>**/*.properties</include>
            </includes>
      </resource>
</resources>

        3. 打包问题

                maven项目自带的打包有时候莫名其妙的会缺少一些东西,建议clean清除后,直接启用tomcat,让tomcat去进行编译打包,然后上传到Linux中一般不会出错。

        4. 项目部署

                这里我采用的是把项目放在某一个文件下,然后在tomcat下的conf/server.xml中配置路径,当tomcat启动的时候就去这个配置好的路径去找项目,切换项目时也只是去xml中修改个路径就可以。

<Context docBase="项目的路径" path="/"> </Context>

        5. 检查本机数据库是否对外开放,如果没有需要配置

           (1)设置共享数据库给外部使用

// mysql远程连接授权
// 先查看user表中有没有设置外部连接
select host, user from user;
// 添加一条root用户的外部连接的权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '自己的密码' WITH GRANT OPTION
// 刷新表信息
FLUSH  PRIVILEGES;

           (2)共享所有数据库给外部使用

                  第一步:首先通过终端连接到自己MySQL数据库

mysql -u root -p

                  第二步:修改连接所需的host为任意

// 格式为update user set host="%" where user='用户名';
update user set host="%" where user='root';

                  第三步:刷新数据库

flush privileges;

本来使用的第一种数据库外部引用方案,在使用Linux跑项目时,登录注册的请求信息就已经发送了,就一直不做跳转操作,我本以为是拦截器的问题,检查了一遍注册登录也放行了,当时就奇了个大怪了,最后才发现是Linux连接电脑本机数据库的IP出了问题,当时检查了数据库外部共享%root也是存在,但就是用不了,导致请求发过去找不到数据库,真是踩了个大坑!!最后试着第二种共享数据库的方法,把localhost改成了%,这样才真正把项目部署完成。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员_小陈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值