当前位置: 代码迷 >> 综合 >> Mybatis -> like模糊查询(concat),连接数据库使用(数据库?useUnicode=trueamp;characterEncoding=UTF-8)解决中文无法识别问题
  详细解决方案

Mybatis -> like模糊查询(concat),连接数据库使用(数据库?useUnicode=trueamp;characterEncoding=UTF-8)解决中文无法识别问题

热度:11   发布时间:2023-12-16 09:48:49.0

连接数据库:重点是

“jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8”,识别中文
否则后面查询会识别不了中文

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--development:表示可以连接多个数据库,这里的名字代表一个数据库--><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url"value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><mappers><!--注册useri.xml;所有用来从数据库获取数据的实现接口的xml都需要在连接数据库这里注册,这些xml相当于实现类都是用来操作数据库中的数据的,sql语句都写在这些xml里面--><mapper resource="com/dao/ImpMapper.xml"/></mappers>
</configuration>

mybatis配置类

package com.rod;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;/*** 功能描述:*/
public class Mybatisconfig {
    private static SqlSessionFactory sqlSessionFactory;static {
    String resource = "mybatis-config.xml";InputStream inputStream = null;try {
    inputStream = Resources.getResourceAsStream(resource);} catch (IOException e) {
    e.printStackTrace();}sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}public static SqlSession getSqlSession() {
    SqlSession session = sqlSessionFactory.openSession();return session;}}

测试类

public class MybatisTest {
    /*** 功能描述: 查询数据* @param* @retuern void**/@Testpublic void test() {
    SqlSession session = Mybatisconfig.getSqlSession();ImpMapper mapper = session.getMapper(ImpMapper.class);Map<String, Object> map = new HashMap<>();map.put("idname","德");List<Mybatis> selectlist = mapper.selectlist(map);for (Object o : selectlist) {
    System.out.println(o);}session.close();}

接口和实现xml

public interface ImpMapper {
    /*** 功能描述: 查询:* @return java.util.List<com.mysqlclass.Mybatis> 查询结果返回一个list集合*/List<Mybatis> selectlist(Map<String,Object> map);
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace是需要绑定到对应的接口 本来应该是实现接口的类中写sql语句,获取数据库中的数据的 现在使用xml文件了.所以要给个名字,相当于implements 接口 只不过变成了namespace="接口全路径" -->
<mapper namespace="com.dao.ImpMapper"><!--这里是id就是调用接口的方法,实现类实现接口还行要重写方法的,这里用id表示方法resulttype:就是返回类型,方法中select了数据库的所有数据,要再在控制台输出,就需要有一个对应着数据库的类,去接受这些查询到的数据,所以result就是要接受数据库数据的类的全路径concat连接,这里不能直接写%#{value}%,字符识别不好,需要用concat连接一下也可以使用"%"#{value}"%"--这里是"",不能用''--><select id="selectlist" resultType="com.mysqlclass.Mybatis">select * from mybatis_1 where idname like concat('%',#{idname},'%')</select>

数据库数据

1,罗德sdf,1
2,罗什,2
5,rod,777
7,gggggg,
6,f,
4,d,4
3,c,3
  相关解决方案