第四天学习Mybatis总结——返回自增长的主键|非自增长的主键

1.返回自增长的主键
第一种方法:
Student.java包括id,stuNum,stuName三个属性
数据库中student表包含三个属性包括id stu_num,stu_name三列,id为主键,自增长。
StudentMapper.xml配置文件


<!-- 当实体属性和表字段名不相同的时候, 必须书写以下代码-->
    <resultMap type="returnprimarykey.Student" id="studentMap">
        <id  property="id" column="id"/>
        <result property="stuNum" column="stu_num"/>
        <result property="stuName" column="stu_name"/>
    </resultMap>
<insert id="addStudent" parameterType="returnprimarykey.Student">
        <selectKey keyColumn="id" keyProperty="id" resultType="int" order="AFTER">
            select last_insert_id()
        </selectKey>
        insert into student1(stu_num,stu_name) values(#{stuNum},#{stuName})
    </insert>

测试类中:

package returnprimarykey;

import org.apache.ibatis.session.SqlSession;

import util.MybatisUtil;

/**
 * 持久层
 * @author user
 *
 */
public class GradesStudentDao {
    /**
     * 查询java班级学科有哪些学生
     *@param name 学科的名 


    /***
     * 查询某个学生是哪个学科的学生
     * @param name 代表学生姓名
     * @return
     */
    public int addStudent(Student student) {
        SqlSession sqlSession = null;
        try {
            sqlSession = MybatisUtil.getSqlSession();
            sqlSession.insert("studentNamespace.addStudent", student);
            sqlSession.commit();
        }catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }finally {
            MybatisUtil.closeSqlSession();
        }
        return student.getId();
    }



    public static void main(String[] args) {
        GradesStudentDao dao = new GradesStudentDao();
        int a = dao.addStudent(new Student("999999999999", "李四"));
        System.out.println("a = "+a);
    }
}
这里返回的a 就是自增长的主键

第二种方法:
student,java和数据库与第一种方法的结构一样
配置文件StudentMapper.xml:

<insert id="addStudent" parameterType="returnprimarykey.Student" useGeneratedKeys="true" keyProperty="id">
        insert into student1(stu_num,stu_name) values(#{stuNum},#{stuName})
    </insert>

返回非自增长的主键:
配置文件:

<!-- 返回非自增的主键,通过mysql的uuid返回一个随机字符串 在上面的配置中需要注意,
    执行uuid函数的操作需要在执行insert语句之前,因此order的值为before,
    resultType为执行查询之后的返回值类型String。-->
    <insert id="addStudent" parameterType="returnprimarykey.Student">
        <selectKey keyColumn="id" keyProperty="id" resultType="string" order="AFTER">
            select uuid()
        </selectKey>
        insert into student1(id,stu_num,stu_name) values(#{id},#{stuNum},#{stuName})
    </insert>

猜你喜欢

转载自blog.csdn.net/qq_39411208/article/details/81427847