解决Spring整合Mybatis中数据库中文乱码的问题

在做一个SSM的项目的时候,数据库用的是MYSQL, 数据库中存储的中文字符取出来的时候和存进去的中文字符变成了问号或者乱码字符。

乱码问题出现的情况有很多种,针对web开发这一流程来说,可以根据数据的流向来定位乱码出现的位置。前台发起一个请求,数据通过http协议到后被接收,这里数据会进行一次编码,在ssm环境下,是springMVC来拦截请求进行处理,所以在springMVC中能配置数据的编码格式,springMVC提供的是一个filter,在web.xml中配置

<!-- 编码过滤器 -->
    <filter>
        <filter-name>springfilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>springfilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

如果经springMVC拦截的中文参数没有出现乱码,则说明这里的编码没有出现问题,然后进一步去分析数据的流向。ssm的环境下是mybatis框架与数据库进行交互,mybatis本身对数据不会进行编码,但是在与数据库交互的时候会有编码的问题,比如在jdbc配置的时候,数据库连接这里有一个编码的参数需要配置。

url=jdbc:mysql://localhost:3306/user?useUnicode=true&amp;characterEncoding=UTF-8
在所连接的数据库后边添加useUnicode=true&amp;characterEncoding=UTF-8

如果以上的配置都确定没有问题和,那么很大可能性就是数据库乱码了,在新建数据库的时候需要选择一个数据的编码方式。

或者在spring的配置文件applicationContext.xml中的配置数据源中的数据库url地址时加上?characterEncoding=utf8后解决了这个问题。

                       ?characterEncoding=utf8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring 整合 MyBatis 操控数据库可以通过以下步骤完成: 1. 配置数据源:在 Spring 的配置文件配置数据源,例如: ``` <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="password" /> </bean> ``` 2. 配置 MyBatis:在 Spring 的配置文件配置 MyBatis,例如: ``` <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="typeAliasesPackage" value="com.example.model" /> <property name="mapperLocations" value="classpath:mapper/*.xml" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper" /> </bean> ``` 3. 编写 Mapper:创建 Mapper 接口并编写 SQL 语句,例如: ``` public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(Long id); @Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})") int insert(User user); @Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}") int update(User user); @Delete("DELETE FROM user WHERE id = #{id}") int delete(Long id); } ``` 4. 注入 Mapper:在 Service 层注入 Mapper 并调用相应方法,例如: ``` @Autowired private UserMapper userMapper; public User findById(Long id) { return userMapper.findById(id); } public int insert(User user) { return userMapper.insert(user); } public int update(User user) { return userMapper.update(user); } public int delete(Long id) { return userMapper.delete(id); } ``` 完成以上步骤后,就可以通过 Service 层的方法操控数据库了。例如: ``` User user = userService.findById(1L); System.out.println(user.getName()); User newUser = new User(); newUser.setName("Tom"); newUser.setAge(20); userService.insert(newUser); newUser.setAge(30); userService.update(newUser); userService.delete(2L); ``` 这样就可以查询、新增、修改和删除数据库的数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值