当前位置: 移动技术网 > IT编程>开发语言>Java > mybatis学习

mybatis学习

2019年07月23日  | 移动技术网IT编程  | 我要评论

mysql自增主键返回

查询id的sql:select last_insert_id()

通过修改user.xml映射文件,可以将mysql自增主键返回,如下添加selectkey 标签:

修改上面的user.xml如下:

复制代码
 <insert id="adduser" parametertype="com.yyb.pojo.user" >
        <!-- selectkey 标签实现主键返回 -->
        <!-- keycolumn:主键对应的表中的哪一列 -->
        <!-- keyproperty:主键对应的pojo中的哪一个属性 -->
        <!-- order:设置在执行insert语句前执行查询id的sql,该值在执行insert语句之后执行查询id的sql -->
        <!-- resulttype:设置返回的id的类型 -->
        <selectkey keycolumn="id" keyproperty="id" order="after" resulttype="int">
            select last_insert_id()
        </selectkey>
      insert into user(username,birthday,address,sex) values (#{username},#{birthday},#{address},#{sex})
    </insert>
复制代码

执行完后,取值即可 :  system.out.println(user.getid());

mybatis查询的2方式:

第一种:原始dao开发。存在重复代码。

在resources下创建一个mapper文件夹,添加user.xml文件:

<?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">
<!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
<mapper namespace="test">
    <!-- id:statement的id 或者叫做sql的id-->
    <!-- parametertype:声明输入参数的类型 -->
    <!-- resulttype:声明输出结果的类型,应该填写pojo的全路径 -->
    <!-- #{}:输入参数的占位符,相当于jdbc的? -->
    <select id="queryuserbyid" parametertype="int"  resulttype="com.yyb.pojo.user">
        select * from user where id  = #{id}
    </select>
</mapper>

 

创建一个sqlsession来执行查询语句:
public class test {
    @org.junit.test
    public void func1() {
        string path = "sqlmapconfig.xml";
        inputstream resourceasstream = null;
        try {
            // 1. 加载sqlmapconfig.xml配置文件
            resourceasstream = resources.getresourceasstream(path);
        } catch (ioexception e) {
            e.printstacktrace();
        }
        // 2. 创建sqlsessionfactory对象
        sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder().build(resourceasstream);
        //3. 创建sqlsession对象
        sqlsession sqlsession = sqlsessionfactory.opensession();

        // 4. 执行sqlsession对象执行查询,获取结果user
        // 第一个参数是user.xml的statement的id,第二个参数是执行sql需要的参数;
        object user = sqlsession.selectone("test.queryuserbyid", 1);

        // 5. 打印结果
        system.out.println(user);

        // 6. 释放资源
        sqlsession.close();
    }
}
第二种:mapper动态代理方式:

:mapper接口开发方法只需要程序员编写mapper接口(相当于dao接口),由mybatis框架根据接口定义创建接口的动态代理对象规则。
比如: //遵循四个原则:
public interface usermapper { 
    //接口方法名 == user.xml中id名
    //返回值类型 与 mapper.xml文件中返回值类型要一致
    //入参类型 与 mapper.xml中入参的类型要一致
    //命名空间 绑定此接口
    public user finduserbyid(integer id);
}
mapper文件如下:

<?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"> <!-- 写sql语句 --> <mapper namespace="com.itheima.mybatis.mapper.usermapper"> <!-- 通过id查询一个用户 --> <select id="finduserbyid" parametertype="integer" resulttype="user"> select * from user where id = #{id} </select> </mapper>

 









                    

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网