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})      這里是實體的對應名字,
這兩處對了就不需要配置其他的了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM