今天这节课本来可以一小时结束的,我却从三点半搞到了九点。我觉得我是世界上最S13的人!!!没有之一!!!!一个小错害我花了一个晚上的时间去寻找,真是够无语的。好了,言归正传,还是先总结下今天学习的内容吧。
create table p_user( id int primary key auto_increment, name varchar(10), sex char(12) ); insert into p_user(name,sex) values('A',"Male"); insert into p_user(name,sex) values('B',"Female"); insert into p_user(name,sex) values('C',"Male") 看见了这里的Male,Female了吗?本来是“男”“女”,因为我之前的Sqlyog插入中文后无法获取所以在这里我就把改成了中文。就是从这里,我开始走向了S13之路!!!!!!!!!!!!!!!!!!!!
package com.mybatis.entities; public class PUSER { private String id; private String name; private String sex; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public PUSER(String id, String name, String sex) { super(); this.id = id; this.name = name; this.sex = sex; } public PUSER() { super(); } @Override public String toString() { return "PUSER [id=" + id + ", name=" + name + ", sex=" + sex + "]"; } }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 6 调用存储过程 查询得到的男性或女性数量:传入0>女性,传入1>>男性 调用存储过程的SQL语句: CALL mybatis.ges_user_count(sexid,@useraccount); --> <!--定义操作 PUser 表的sql 映射文件:userMapper3.xml --> <mapper namespace="com.mybatis.test7.puserMapper3"> <!-- 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 --> <select id="getUserCount" parameterMap="getUserSexCount" statementType="CALLABLE"> CALL mybatis.ges_user_count(?,?) </select> <!-- Map<String,Integer> paramMap = new HashMap<>(); paramMap.put("sexid", 1); paramMap.put("usercount", -1); --> <parameterMap type="java.util.Map" id="getUserSexCount"> <parameter property="sexid" mode="IN" jdbcType="INTEGER"/> <parameter property="usercount" mode="OUT" jdbcType="INTEGER"/> </parameterMap> </mapper>
package com.mybatis.test7; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import com.mybatis.entities.User; public class Test7 { @Test public void test() { SqlSession session= MybatisUtils.getSqlSessionFactory().openSession(); String statement = "com.mybatis.test7.puserMapper3.getUserCount"; Map<String,Integer> paramMap = new HashMap<>(); paramMap.put("sexid", 0); paramMap.put("usercount", -1); session.selectOne(statement, paramMap); //返回查询值 Integer result = paramMap.get("usercount"); System.out.println(result); session.close(); } }
这里报的错【java.sql.SQLException: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='】
稍后会详细讲解下这个错误的解决办法。