Mybatis之序列插入语句(Mysql和Oracle)总结

在使用mybatis根据ID自增长插入语句问题?

在mybatis核心配置文件中解决

MYSQL解决办法:


    
        insert into dept(dname,loc) values (#{dname},#{loc});
    


Oracle解决办法:


     
         
         
             
             
                SELECT seq_deptno.nextval FROM dual
            
         

             
            
                insert into dept(deptno,dname,loc) 
                values (#{deptno},#{dname},#{loc})
            
    

     
--------------------- 

mybatis 更新数据表、自动增长序列、


一、更新数据表
1.在映射文件中添加:

update student set name=#{name},age=#{age} where id=#{id}

2.在测试文件中添加(先查询出修改的对象,然后在修改)
String statement="com.huayu.mapper.studentMapper"+".selectStudentById";
// String statement1="com.huayu.mapper.studentMapper"+".updateStudentById";
// Student st=sqlSession.selectOne (statement,6);
// st.setName("huahua");
// st.setAge(20);
// sqlSession.update(statement1, st);


二、添加数据时,针对id设主键,避免唯一约束,如何实现自动增长
1.第一种方式:
在oracle中.
a、添加序列表
b、在映射文件中找到insert元素输入以下内容,如:


select s_t_seq.nextval from dual

insert into student values(#{id},#{name},#{age})

在触发器中


2.第二种方式
在mysql中.
1.打开cmd输入mysql -u root
2.创建数据库名称:create database 名字;
3.use 名字
4.create table Student(
student_id int(6) not null primary key auto_increment,
student_name varchar(10) not null,
student_age int(2) not null
);
5.将映射文件insert修改为
  keuProperty="id">
insert 语句

6、将driver改成com.mysql.jdbc.Driver
将url改成jdbc:mysql://localhost:3306/mysql数据库名字


三、
1.mybatis嵌套结果(使用association进行关联)
首先,在映射文件中根据班级id查询班级的信息

使用resultMap引用对象的属性,注意id和上面的resultMap名称一致



<关联,一对一映射>




2.嵌套查询
通过多条select语句得到结果
先根据班级id查出班级信息

再根据resultMap去引用resultMap标签里的属性,它包括:
Classes类的属性



和Classes关联的teacher类的属性





四、一对多映射


五、动态sql;
1.先把要使用的条件写成java类的属性;
2.在映射文件中查询语句;