MyBatis-Insert、Delete、Update的注意事项

插入/更新乱码的解决

出现插入乱码,首先要考虑数据库的编码集是不是UTF-8

如果数据库的编码无误,查看MyBatis的全局配置文件中有没有配置编码集。

下面是正确的配置方式。

<?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>
<!--配置SQL打印-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings> <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://rayfoo.cn:3306/test?useUnicode=true&amp;characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="****"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/rayfoo/mapper/CustomerMapper.xml"/>
</mappers>
</configuration>

插入后数据库不生效的解决

插入不生效考虑SqlSession是否提交。下面我们会展示正确的代码。此方法同样适用删除和更新。

package cn.rayfoo.bean;

import lombok.Data;
import lombok.NoArgsConstructor; /**
* Created by rayfoo@qq.com Luna on 2020/2/4 15:29
*/
@Data@NoArgsConstructor
public class Customer {
private Integer cust_id;
private String cust_name;
private String cust_profession;
private String cust_phone;
private String email; public Customer(String cust_name, String cust_profession, String cust_phone, String email) {
this.cust_name = cust_name;
this.cust_profession = cust_profession;
this.cust_phone = cust_phone;
this.email = email;
}
}
package cn.rayfoo.util;

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; /**
* Created by rayfoo@qq.com Luna on 2020/2/5 10:56
*/
public class MyBatisUtil { /**
* 获取一个Session
* @return
* @throws IOException
*/
public static SqlSession getSession() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-cfg.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
return sqlSessionFactory.openSession();
} }
package cn.rayfoo.mapper;

import cn.rayfoo.bean.Customer;

import java.util.List;

/**
* Created by rayfoo@qq.com Luna on 2020/2/4 15:45
*/
public interface CustomerMapper { /**
* 查询所有记录
*
* @return
*/
List<Customer> findAll(); Customer findOne(Integer cust_id); int insertCustomer(Customer customer); }
<?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">
<mapper namespace="cn.rayfoo.mapper.CustomerMapper">
<insert id="insertCustomer" parameterType="cn.rayfoo.bean.Customer">
insert into customer(cust_id,cust_name,cust_profession,cust_phone,email)
values(#{cust_id},#{cust_name},#{cust_profession},#{cust_phone},#{email});
</insert>
<select id="findAll" resultType="cn.rayfoo.bean.Customer">
select * from customer
</select>
<select id="findOne" resultType="cn.rayfoo.bean.Customer">
select * from customer where cust_id = #{cust_id}
</select>
</mapper>
package cn.rayfoo.test;

import cn.rayfoo.bean.Customer;
import cn.rayfoo.mapper.CustomerMapper;
import cn.rayfoo.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.io.IOException; /**
* Created by rayfoo@qq.com Luna on 2020/2/4 15:58
*/
public class TestApp { @Test
public void test01() throws IOException {
SqlSession session = MyBatisUtil.getSession();
CustomerMapper mapper = session.getMapper(CustomerMapper.class);
Customer all = mapper.findOne(1);
System.out.println(all);
session.close();
} @Test
public void test02() throws IOException {
SqlSession session = MyBatisUtil.getSession();
Customer customer = new Customer( "张三", "码农", "10086", "10086@qq.com");
int insert = session.insert("insertCustomer",customer);
//此处需要进行提交
session.commit();
session.close();
} @Test
public void test03() throws IOException {
SqlSession session = MyBatisUtil.getSession();
CustomerMapper mapper = session.getMapper(CustomerMapper.class);
Customer customer = new Customer( "张三", "码农", "10086", "10086@qq.com");
mapper.insertCustomer(customer);
//此处需要进行提交
session.commit();
session.close();
} }

插入POJO对象的注意事项

为了防止SQL注入,我们尽量使用#{},在插入POJO对象的属性时,#{}中使用POJO对象的属性名!!!

参考上述代码。

最新文章

  1. Entity Framework Code First关系映射约定
  2. insert、update select from
  3. CvMat and cv::Mat
  4. 运行ASP程序报错
  5. simplexml_load_string 解析gb2312编码的xml
  6. Sumdiv 等比数列求和
  7. Cookie的读写
  8. Linux硬盘分区和格式化
  9. Java数据结构与算法(2) - ch03排序(冒泡、插入和选择排序)
  10. myBatIs.Net 调用Oracle 存储过程返回游标
  11. JS学习之动态加载script和style样式
  12. Java数据流的一般操作规律总结
  13. 如何编写一个gulp插件
  14. CSS中各种居中的问题
  15. FFmpeg的一般流程
  16. LOIC
  17. JS中循环逻辑和判断逻辑的使用实例
  18. [Go] sync.Pool 的实现原理 和 适用场景
  19. java版本DbhelperMysql
  20. CVE-2014-4113本地提权测试

热门文章

  1. 有未经处理的异常: 0xC00000FD: Stack overflow
  2. [运维] 如何解决 nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
  3. pexpect &amp;&amp;pxssh
  4. idea激活,使用破解补丁无需注册码
  5. SpringBoot与Jpa自定义增删查改
  6. shell脚本添加脚本执行时间和当前运行次数current running time
  7. 【转】PowerDesigner数据库视图同时显示Code和Name
  8. 《Java Spring框架》Spring IOC 源码分析
  9. Educational Codeforces Round 73 (Rated for Div. 2)E(思维,博弈)
  10. 【转】android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler