mybatis 插入实体与数据库中的字段不一致的解决方案

1、建立一个实体类

public class Student {

    private Integer id;
    private String name;
    private Double salary;

    public Student() {
    }

    public Student(Integer id, String name, Double salary) {
        this.id = id;
        this.name = name;
        this.salary = salary;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getSalary() {
        return salary;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }
}

  2、建立数据库

CREATE  table student(
    student_id int(5) PRIMARY KEY ,
    student_name VARCHAR (10),
    student_salary DOUBLE (8,2)
)

  4、配置文档

<?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 resource="db.properties"/>

    <!-- 设置类型别名 -->
    <typeAliases>
        <typeAlias type="com.liuyang.mybatis.student.bean.Students" alias="student"/>
    </typeAliases>

    <!-- 设置一个默认的连接环境信息 -->
    <environments default="mysql_developer">

        <!-- 连接环境信息,取一个任意唯一的名字 -->
        <environment id="mysql_developer">
            <!-- mybatis使用jdbc事务管理方式 -->
            <transactionManager type="jdbc"/>
            <!-- mybatis使用连接池方式来获取连接 -->
            <dataSource type="pooled">
                <!-- 配置与数据库交互的4个必要属性 -->
                <property name="driver" value="${mysql.driver}"/>
                <property name="url" value="${mysql.url}"/>
                <property name="username" value="${mysql.username}"/>
                <property name="password" value="${mysql.password}"/>
            </dataSource>
        </environment>

        <!-- 连接环境信息,取一个任意唯一的名字 -->
        <environment id="oracle_developer">
            <!-- mybatis使用jdbc事务管理方式 -->
            <transactionManager type="jdbc"/>
            <!-- mybatis使用连接池方式来获取连接 -->
            <dataSource type="pooled">
                <!-- 配置与数据库交互的4个必要属性 -->
                <property name="driver" value="${oracle.driver}"/>
                <property name="url" value="${oracle.url}"/>
                <property name="username" value="${oracle.username}"/>
                <property name="password" value="${oracle.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 加载映射文件-->
    <mappers>
        <!--demo_4-->
        <mapper resource="com/liuyang/demo_4/StudentMapper2.xml"/>    这里是重点,加入你的个人的xml文档的路径样式如图
    </mappers>
</configuration>

5、配置文档

<?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="com.liuyang.demo_4.Student">
    <resultMap type="com.liuyang.demo_4.Student" id="studentMap">
        <id property="id" column="student_id"/>
        <result property="name" column="student_name"/>
        <result property="salary" column="student_salary"/>
    </resultMap>

    <!--这里不用parameterMap-->
    <insert id="add"  parameterType="com.liuyang.demo_4.Student">
         insert into student(student_id,student_name,student_salary) values(#{id},#{name},#{salary})   这里是重点
    </insert>

    <!--查询一个学生-->
    <select id="findById" parameterType="int" resultMap="studentMap">
           SELECT student_id,student_name,student_salary from student WHERE  student_id =#{student_id}
    </select>
</mapper>

红字部分,其实

<insert id="add"  parameterType="com.liuyang.demo_4.Student">
         insert into student(student_id,student_name,student_salary) values(#{id},#{name},#{salary})   这里是重点
    </insert>这段代码与上边的
<resultMap type="com.liuyang.demo_4.Student" id="studentMap">
        <id property="id" column="student_id"/>
        <result property="name" column="student_name"/>
        <result property="salary" column="student_salary"/>
    </resultMap>这里不反冲,主要是写好sql语句,其他都是正常配置
insert into student(student_id,student_name,student_salary) values(#{id},#{name},#{salary}) 前边student
(student_id,student_name,student_salary) 这里是表中的字段名后边
values(#{id},#{name},#{salary})      这里是实体的对应名字,这两处对了就不需要配置其他的了。
时间: 2024-10-12 04:52:18

mybatis 插入实体与数据库中的字段不一致的解决方案的相关文章

关于mybatis中的实体类属性与数据库中的列名不一致的两种解决方法

1.我们都知道,在mybatis中写实体类的时候,是按照数据库中的列名来给实体类定义属性的,举个例子: public class User implements Serializable { private Integer id; private String username; private String address; private String sex; private Date birthday; } 2.但是,如果我们在定义实体类的时候,实体类中的属性与数据库列名不一致呢?比如:

C#获取数据库中某个字段的最大值

curTime = SalesDB.ImageTable.Max(s => s.AddTime); 上面的代码获取到数据库中AddTime字段的最大值.

关于从JSP页面插入数据到数据库中乱码问题的解决

问题描述:最近我在写一个j2ee的留言板系统模块,遇到了一个非常让我头大的问题,当我从JSP页面输入数据后,通过hibernate中的业务逻辑类HQL语句把这个数据插入到本地的mysql数据库中,可是当我发现成功插入后在数据库中看到的是乱码,再回显到浏览页面中看到的也是一堆乱码,我的jsp页面设置编码为UTF-8,如下: <%@ page language="java" contentType="text/html; charset=UTF-8"    pag

当数据库中的字段与javabean中对应的属性名不同

当数据库中的字段与javabean中对应的属性名不同时: 在查询语句中对不同的字段起别名,例如: 数据库中的字段名为last_name , javabean中为lastName则:select last_name lastName from...... 原文地址:https://www.cnblogs.com/cn-chy-com/p/9186340.html

Hibernate 查询结果与数据库中的数据不一致

hibernate的bug: https://hibernate.atlassian.net/browse/HHH-4956 解决办法: 添加别名select max(max_pre_nights) ,max(max_post_nights) from package_pre_post_hotel where package_id = :packageId添加别名后可以解决问题,如果SQL中的列名不是唯一的,最好都添加别名,比如 select a.id as a_id , b.id as b_i

镜像切换Logreader Agent报错:分发数据库中可能存在不一致的状态

软件环境:Windows Server 2008 R2 sp1    SQL Server 2008 R2 sp2 架构:ServerA(主体)+ServerB(镜像)+ServerSub(订阅)+ServerDist(分发) 特别注意:ServerDist分发服务器为单机,故开启了Sync_With_Backup选项. 关于Sync_With_Backup: 初衷:简单来说,开启该选项,使得单机分发库在宕机时,利用最近的系统数据库和用户数据库备份,还原到一台新的服务器上,即可使复制继续工作成为

给Oracle数据库中CLOB字段插入空值

遇到往ORACLE数据库中插入数据时总是报ORA-01084 invalid argument in OCI call错误,经分析是因为表中的一个字段类型为CLOB,并且可为空,当在给该字段插入空值时引发的该错误.后来判断是否为空值,如果为空值使用DBNull.Value,以此解决了该问题. Null 指的是无效的对象引用:而 DBNull 是一个类, DBNull.Value 是它唯一的实例 .DBNull 的实例 DBNull.Value是数据库表中的空数据在 .Net 代码中的表现形式.我

mybatis高级(2)_数据库中的列和实体类不匹配时的两种解决方法_模糊查询_只能标签

<?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.cnsdhzzl.dao.StudentDao&q

java批量插入数据进数据库中

方式1: for循环,每一次进行一次插入数据. 方式2: jdbc的preparedStatement的batch操作 PreparedStatement.addBatch(); ...... PreparedStatement.executeBatch(); 一次最多不要超过50条:1.因为当你插入的时候 数据库已经锁定,然而如果你一次性插入太多会造成其他业务的等待.2.会造成内存的溢出 方式2的本质是:insert into table (a,b,c,d) values(av,bv,cv.d