学习mybatis遇到的问题

工程结构:
图片说明

先配置了jdbc的.properties文件:
图片说明

mybatis-config.xml文件:
图片说明

映射数据表的POJO类:
图片说明

mapper.xml文件:
图片说明

用来测试的JUnit类:
图片说明

运行后出现的问题:
图片说明

异常:
图片说明

请问是什么原因,如何解决?

10个回答

你的jdbc.properties中的Ip写错了。 应该是127.0.0.1

VitoYi
VitoYi 感谢,这个小细节错了
3 年多之前 回复

将你的userMapper.xml里的resultType 后面修改为 resultType="java.lang.Integer"

theUncle
paavochan 回复VitoYi: 最后一个图把错误截图全一点呢
3 年多之前 回复
VitoYi
VitoYi 改完不行,还是同样的问题
3 年多之前 回复

在 mybatis-config.xml文件:value="${url}"把你的#改成$

qq_33287156
java午夜 回复VitoYi: http://elim.iteye.com/blog/1841033应该是selectOne里面的路径有问题,给你一个链接自己再看看
3 年多之前 回复
VitoYi
VitoYi -_-..竟然没发现这个小问题,但是改完之后还不行,还是和图中一样的问题
3 年多之前 回复

把你的mapper.xml移到 resources 下 试试

图片说明

再试下 把 selectOne("xx.xxx.UserMapper)
修改 为 userMapper 小写的. 或者把文件修为大写的

数据源中的name应用这样写,主要是驱动。

 <!-- 1.数据源:DriverManagerDataSource -->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/csdn_test"></property>
        <property name="username" value="root"></property>
        <property name="password" value="555222"></property>
    </bean>

selectOne里面只填写select的id试试

结构
jar

roject="${targetProject}" type="XMLMAPPER">

    <!-- 要生成的表 tableName 是数据库中的表名或视图名 domainObjectName 是实体类名 -->
    <table tableName="jcmarryout" domainObjectName="Jcmarryout" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
        <generatedKey column="jcmarryoutid" sqlStatement="Mysql" identity="true" />
    </table>



</context>

jdbc.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/bookmangae?useUnicode=true&characterEncoding=utf-8
username=root
password=123
validationQuery=SELECT 1

mysql.classPath=G:javajava_liblog4jdbcmysql-connector-java-5.1.22-bin.jar

\u6570\u636e\u5e93\u914d\u7f6e

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/zupu?useUnicode=true&characterEncoding=utf-8
&zeroDateTimeBehavior=convertToNull
jdbc.user=root
jdbc.password=1234
#\u5305\u6587\u4ef6\u4f4d\u7f6e
targetProject=batis
package.model=com.zhongzheng.po.jcmarryout
package.sql.mapper=com.zhongzheng.mapping.jcmarryout
package.dao.mapper=com.zhongzheng.dao.jcmarryout

结构
jar

 注意:需要mysql-connector-java-5.1.22-bin.jar 
 <!-- <classPathEntry location="G:\java\java_lib\log4jdbc\mysql-connector-java-5.1.22-bin.jar" />  -->



generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <properties resource="jdbc.properties" />  
    <!-- classPathEntry:数据库的JDBC驱动,换成你自己的驱动位置 -->  
    <classPathEntry location="G:\java\java_lib\log4jdbc\mysql-connector-java-5.1.22-bin.jar" />  
    <context id="Mysql" targetRuntime="MyBatis3" defaultModelType="flat">
           <!--  关闭自动生成的注释  -->
           <commentGenerator>
                <property name="suppressAllComments" value="true" />
                <property name="beginningDelimiter" value="`"/>
                <property name="endingDelimiter" value="`"/>
            </commentGenerator>    
            <!--  关闭自动生成的注释  -->

        <!-- 数据库链接URL,用户名、密码 -->
        <jdbcConnection connectionURL="${jdbc.url}" driverClass="${jdbc.driverClass}"
            password="${jdbc.password}" userId="${jdbc.user}" />

        <!-- 指定JDBC和Java类型转换 -->  
        <javaTypeResolver>  
            <!-- 是否使用bigDecimal,默认为false false可自动转化以下类型(Long, Integer, Short, etc.) --> 
            <property name="forceBigDecimals" value="false" />  
        </javaTypeResolver>  

        <!-- 生成模型的包名和位置 -->
        <javaModelGenerator targetPackage="${package.model}" targetProject="${targetProject}">
            <property name="constructorBased" value="true" />
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
            <!-- <property name="rootClass" value="com.ajs.base.BaseEntity" /> -->
        </javaModelGenerator>

        <!-- 生成映射文件的包名和位置 -->
        <sqlMapGenerator targetPackage="${package.sql.mapper}" targetProject="${targetProject}">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- 生成DAO的包名和位置 -->
        <javaClientGenerator targetPackage="${package.dao.mapper}" targetProject="${targetProject}" type="XMLMAPPER">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>       

        <!-- 要生成的表 tableName 是数据库中的表名或视图名 domainObjectName 是实体类名 -->
        <table tableName="jcmarryout" domainObjectName="Jcmarryout" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
            <generatedKey column="jcmarryoutid" sqlStatement="Mysql" identity="true" />
        </table>



    </context>
</generatorConfiguration>



jdbc.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/bookmangae?useUnicode=true&amp;characterEncoding=utf-8
username=root
password=123
validationQuery=SELECT 1

mysql.classPath=G\:javajava_liblog4jdbcmysql-connector-java-5.1.22-bin.jar
# \u6570\u636e\u5e93\u914d\u7f6e
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/zupu?useUnicode=true&amp;characterEncoding=utf-8
&zeroDateTimeBehavior=convertToNull
jdbc.user=root
jdbc.password=1234
#\u5305\u6587\u4ef6\u4f4d\u7f6e
targetProject=batis
package.model=com.zhongzheng.po.jcmarryout
package.sql.mapper=com.zhongzheng.mapping.jcmarryout
package.dao.mapper=com.zhongzheng.dao.jcmarryout
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐