版权声明: https://blog.csdn.net/qq_40515156/article/details/83896135
1.找不到BaseResultMap类,报错如下:
<select id="getAllUsers" resultMap="BaseResultMap">
SELECT * FROM user
</select>
<select id="login" resultMap="BaseResultMap" parameterType="map">
SELECT * FROM user WHERE id=#{userId} and password = #{password}
</select>
<select id="selectById" parameterType="int" resultMap="BaseResultMap">
SELECT * from user where id = #{userId};
</select>
解决办法:将第二个select的parameterType改为resultMap
由此特意学习了一下parameterType、prrameterMap、resultMap、resulttype,首先需要明白的就是Map代表着映射,type是java的一种类型,将它们的的区别以及使用情况整理如下:
1.1resultType和resultMap
均表示查询结果集——java对象之间的一种关系,即处理查询结果集,映射到java对象。resultMap表示将查询结果列一一映射到bean对象的各个属性,resultType表示的是bean中的对象类,在查询结果集中的属性和bean对象类中的属性一一对应时,可以省略映射
1.2parameterType和parameterMap
parameterMap和resultMap类似,开发过程中一般使用后者,parameterType直接将查询结果列值类型自动对应到java对象属性类型上,不在配置映射关系一一对应
1.3userMapprer的部分配置文件代码如下:
<select id="getAllUsers" resultMap="BaseResultMap">
SELECT * FROM user
<!--Mapper配置文件,从user表获取-->
</select>
<select id="login" resultMap="BaseResultMap" parameterType="map">
SELECT * FROM user WHERE id=#{userId} and password = #{password}
</select>
2.注册insert方法写了却失败,但是可以成功查询到已经注册的信息
SQL语句对每一个字段设置与对给定的字段进行设置,在insert方法中为了避免出错,最好使用后者
<insert id="insert" parameter="User">
INSERT INTO USER VALUES (#(id),#(name),#(password),0)
</insert>
<!--角色role默认为0,学生,管理员直接给-->
<insert id="insert" parameter="User">
INSERT INTO USER (id,name,password,role) VALUES (#(id),#(name),#(password),0)
</insert>
3.启动Tomcat报JMX端口被其他进程占用
在答辩前10分钟,启动Tomcat时居然报了个JMX1099端口被占用,对于这个问题,以前我的解决方法是打开配置文件修改端口值,这样修改的地方就比较多,最快的解决方案是打开后台的任务管理器,查看哪个进程占用了
使用命令:netstat -aon|findstr 1099
可看到使用此端口的进程
使用命令:taskkill -f -pid
关闭使用此端口的进程