一:传入中文的值却查询不出数据,传入英文却能查询出数据
解决方式:
https://blog.csdn.net/jaky0306/article/details/119140057
问题点:
1.配置完好
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_db?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=qwer1234
sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!--环境配置-->
<!-- 加载properties文件-->
<properties resource="jdbc.properties"></properties>
<!-- <settings>-->
<!-- <!– 打印查询语句 –>-->
<!-- <setting name="logImpl" value="STDOUT_LOGGING" />-->
<!-- </settings>-->
<!-- 设置别名-->
<typeAliases>
<!-- 方式一:给单个实体起别名-->
<!-- <typeAlias type="com.lagou.domain.User" alias="user"></typeAlias>-->
<!-- 方式二:批量起别名 别名就是类名,且不区分大小写-->
<package name="com.lagou.domain"/>
</typeAliases>
<environments default="mysql"> <!--使用MySQL环境-->
<environment id="mysql"> <!--使用JDBC类型事务管理器-->
<transactionManager type="JDBC"></transactionManager> <!--使用连接池-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"></property>
<!-- 可能出现中文乱码,所以在后面加上?useUnicode=true&characterEncoding=utf-8 -->
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</dataSource>
</environment>
</environments>
<!--加载映射配置-->
<mappers>
<!-- <mapper resource="com/lagou/mapper/UserMapper.xml"></mapper>-->
<!-- 使用该方式:接口和映射文件同步同名-->
<!-- <mapper class="com.lagou.mapper.UserMapper"></mapper>-->
<!--批量加载映射-->
<package name="com.lagou.mapper"/>
</mappers>
</configuration>
多条件查询:传值为id为1,username为"张三"
@Test
public void test3() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
//当前返回的 其实是基于UserMapper所产生的代理对象:底层:JDK动态代理 实际类型:proxy
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.findByIdAndUsername1(1, "张三");
List<User> allResultMap = mapper.findAllResultMap();
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
启动后不会报错、也不会显示数据只是显示运行完成
Process finished with exit code 0
而后要进行问题查询:
1:可能是数据库中的编码设置不正确或者未进行设置
解决方式:
打开mysql 目录,编辑配置文件 my.ini 设置mysql编码如下
重启mysql或者重启电脑