查询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>
如对本文有疑问, 点击进行留言回复!!
springcloud中feign调用处理mybatis-plus Ipage反序列化问题。
Flume 史上最全面的大数据学习第十篇(一) 别再说不知道flume是什么了
网友评论