我现在是基于mybatis框架,我想将java中的string字符串存到mysql的blob类型字段中,我应该怎么写,并且怎么把它读出来 
时间: 2023-04-03 13:02:08 浏览: 28
您可以使用PreparedStatement将字符串转换为字节数组,然后将其插入到BLOB字段中。示例代码如下:
```
String str = "Hello World";
byte[] bytes = str.getBytes("UTF-8");
PreparedStatement ps = conn.prepareStatement("INSERT INTO my_table (my_blob_column) VALUES (?)");
ps.setBytes(1, bytes);
ps.executeUpdate();
```
要从BLOB字段中读取字符串,您可以使用ResultSet获取字节数组,然后将其转换为字符串。示例代码如下:
```
PreparedStatement ps = conn.prepareStatement("SELECT my_blob_column FROM my_table WHERE id = ?");
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
byte[] bytes = rs.getBytes("my_blob_column");
String str = new String(bytes, "UTF-8");
}
```
相关问题
mysql blob 乱码_Mybatis中mysql blob类型乱码解决
Mybatis中mysql blob类型乱码通常是因为编码不匹配导致的。解决方法如下:
1. 修改数据库表的编码为utf8mb4
```
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
```
2. 在Mybatis配置文件中添加编码配置
```
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
...
</mappers>
</configuration>
```
其中,`useUnicode=true`表示使用Unicode编码,`characterEncoding=utf-8`表示使用UTF-8编码。
3. 在Mapper.xml文件中设置参数类型
```
<insert id="insertBlob" parameterType="map">
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO blob_table (id, content) VALUES (#{id}, #{content, jdbcType=BLOB})
</insert>
```
其中,`jdbcType=BLOB`表示使用BLOB类型。
通过以上三个步骤,可以解决Mybatis中mysql blob类型乱码的问题。
map中是字符串mybatis当做了list报错
如果你在 MyBatis 中将一个字符串映射到一个 List 类型的参数或结果集合中,可能会出现这种错误。这是因为 MyBatis 在尝试将字符串转换为 List 类型时出现问题。
要解决这个问题,你需要确保你的参数或结果集合的类型与你的映射语句中使用的类型相匹配。如果你的参数或结果集合是一个 List 类型,那么你需要在映射语句中使用 foreach 标签来迭代 List 中的每个元素。
例如,假设你有一个映射语句如下:
```xml
<select id="getUserList" resultType="User">
SELECT * FROM users WHERE id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
```
如果你将一个字符串类型的参数传递给这个映射语句,那么 MyBatis 将会尝试将字符串解析为 List 类型,因此会出现错误。要解决这个问题,你需要将参数转换为 List 类型,例如:
```java
List<String> ids = Arrays.asList("1", "2", "3");
Map<String, Object> params = new HashMap<>();
params.put("ids", ids);
List<User> userList = sqlSession.selectList("getUserList", params);
```
在这个例子中,我们将字符串数组转换为 List 类型,然后将 List 作为参数传递给映射语句。这样 MyBatis 就能正确地解析参数,并将其映射到结果集合中。
相关推荐
















