<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTDConfig 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--mapper.dtd--> <mapper namespace="test"> <select id="findUserById" parameterType="int" resultType="com.lzq.mybat.User"> SELECT * FROM user WHERE id = #{id} </select> <!--中间是sql语句#{}表示展位副,其中的值可任意,parametertype的type和展位副类型一样--> <!--虽然这个模糊查询查询出多条记录,看似返回值是list,but,resulttype结果类型是单条result所映射的java类型--> <select id="findUserByName" parameterType="java.lang.String" resultType="com.lzq.mybat.User"> SELECT * FROM user WHERE username LIKE '%${value}%' </select> <!--得到主键,因为表间的关联关系,主表主键作为子表关联外键--> <!--添加用户--> <!--得到insert进去的主键值,仅适用于auto_increment主键--> <!--keyproperty 值为将结果映射为parameterType中的id属性值,order相对于insert 语句执行之后--> <insert id="insertUser" parameterType="com.lzq.mybat.User"> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> SELECT last_insert_id() </selectKey> INSERT INTO user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address}) </insert> <!--适用于非自增主键,before,先通过uuid的到主键,在通过insert into 插入进去,所以是before--> <!--<insert id="insertUser" parameterType="com.lzq.mybat.User">--> <!--<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Integer">--> <!--SELECT uuid()--> <!--</selectKey>--> <!--INSERT INTO user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address})--> <!--</insert>--> <!--删除用户--> <delete id="deleteUser" parameterType="java.lang.Integer" > DELETE FROM user WHERE id=#{id} </delete> <!--根据id更新用户,--> <update id="updateUser" parameterType="com.lzq.mybat.User"> UPDATE user SET username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} WHERE id=#{id} </update><xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTDConfig 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--mapper.dtd--> <!--namespace在开发mapper代理时有重要作用,就是写成mapper接口的地址--> <!--采用mapper代理开发,省去很多重复代码--> <mapper namespace="com.lzq.mapper.UserMapper"> <!--定义sql片段--> <sql id="query_user_where"> <if test="userExpand!=null"> <if test="userExpand.sex!=null and userExpand.sex!='' "> and user.sex=#{userExpand.sex} </if> <if test="userExpand.username!=null and userExpand.username!=''"> and user.username=#{userExpand.username} </if> </if> <if test="ids!=null"> # 使用foreach遍历传入ids,collection遍历的集合,item遍历的每一个的名称自己赋值, # open 开始遍历拼接的sql语句开头,close=“” 结束遍历所拼接的串,separator遍历的两个对象 # 中间所需要拼接的字符串 # sql语句为 AND (id=1 or id=10 or id=16) <foreach collection="ids" item="user_id" open="AND (" close=")" separator="or"> # 每次遍历需要拼接的串 id=#{user_id} </foreach> # sql 语句 and id in (1,10,16) <foreach collection="ids" item="user_id" open="AND id in (" close=")" separator=","> #{user_id} </foreach> </if> </sql> <!--定义 resultmap,type是最终映射的java对象,id唯一标识--> <resultMap id="userResultMap" type="user"> <!--id 映射唯一主键,colum查询出的列,propertytype中的属性--> <!--result 普通映射--> <id column="id_" property="id"/> <result column="username_" property="username"/> </resultMap> <!--resultMap 为创建的resultMap的id号,如果,resultmap在其他的xml文件中,前面需加上namespace--> <!--查询的出来的字段与pojo中的字段不一样,即 select id id_ 下面的这种查询语句,需要通过,resultMap映射--> <select id="findUserByIdResultMap" parameterType="int" resultMap="userResultMap"> SELECT id id_, username username_ FROM user WHERE id = #{value} </select> <select id="findUserById" parameterType="int" resultType="com.lzq.mybat.User"> SELECT * FROM user WHERE id = #{id} </select> <!--输入参数,输出参数多元化--> <select id="findUserList" parameterType="com.lzq.dao.UserQueryVo" resultType="com.lzq.dao.UserExpand"> SELECT * FROM user # where可以自动的去掉第一个and <where> # 如果不在此mapp.xml中,再别处加namespace <include refid="query_user_where"/> </where> # WHERE user.id = #{userExpand.sex} AND user.username LIKE '%${userExpand.username}%' </select> <!--userExpand.sex取出包装类型 的参数值,parametertype类型中包含userExpand--> <!--中间是模模糊查询查询出多条记ql语句#{}表示展位副,其中的值可任意,parametertype的type和展位副类型一样--> <!--虽然这个模糊查询查询出多条记录,看似返回值是list,but,resulttype结果类型是单条result所映射的java类型--> <select id="findUserByName" parameterType="java.lang.String" resultType="com.lzq.mybat.User"> SELECT * FROM user WHERE username LIKE '%${value}%' </select> <!--模糊查询用拼接符${}并用引号引起来,#{}不用用引号括起来--> <!--得到主键,因为表间的关联关系,主表主键作为子表关联外键--> <!--添加用户--> <!--得到insert进去的主键值,仅适用于auto_increment主键--> <!--keyproperty 值为将结果映射为parameterType中的id属性值,order相对于insert 语句执行之后--> <insert id="insertUser" parameterType="com.lzq.mybat.User"> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> SELECT last_insert_id() </selectKey> INSERT INTO user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address}) </insert> <!--适用于非自增主键,before,先通过uuid的到主键,在通过insert into 插入进去,所以是before--> <!--<insert id="insertUser" parameterType="com.lzq.mybat.User">--> <!--<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Integer">--> <!--SELECT uuid()--> <!--</selectKey>--> <!--INSERT INTO user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address})--> <!--</insert>--> <!--删除用户--> <delete id="deleteUser" parameterType="java.lang.Integer"> DELETE FROM user WHERE id = #{id} </delete> <!--根据id更新用户,--> <update id="updateUser" parameterType="com.lzq.mybat.User"> UPDATE user SET username = #{username}, birthday = #{birthday}, sex = #{sex}, address = #{address} WHERE id = #{id} </update> </mapper>
mybatis一些总结
最新推荐文章于 2022-09-02 16:47:32 发布