diff options
Diffstat (limited to 'sonar-db/src/main/resources/org/sonar/db/user')
7 files changed, 697 insertions, 0 deletions
diff --git a/sonar-db/src/main/resources/org/sonar/db/user/AuthorMapper.xml b/sonar-db/src/main/resources/org/sonar/db/user/AuthorMapper.xml new file mode 100644 index 00000000000..440d2d74701 --- /dev/null +++ b/sonar-db/src/main/resources/org/sonar/db/user/AuthorMapper.xml @@ -0,0 +1,33 @@ +<?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"> + +<mapper namespace="org.sonar.db.user.AuthorMapper"> + + <select id="selectByLogin" parameterType="string" resultType="Author"> + SELECT id, person_id AS personId, login, created_at AS createdAt, updated_at AS updatedAt + FROM authors WHERE login=#{id} + </select> + + <select id="countDeveloperLogins" parameterType="long" resultType="int"> + SELECT count(id) + FROM authors WHERE person_id=#{id} + </select> + + <insert id="insert" parameterType="Author" keyColumn="id" useGeneratedKeys="true" keyProperty="id"> + INSERT INTO authors (person_id, login, created_at, updated_at) + VALUES (#{personId}, #{login}, + #{createdAt}, #{updatedAt}) + </insert> + + <select id="selectScmAccountsByDeveloperUuids" parameterType="String" resultType="String"> + SELECT a.login + FROM authors a + INNER JOIN projects p ON p.id=a.person_id + <where> + and p.uuid in + <foreach collection="uuids" open="(" close=")" item="uuid" separator=","> + #{uuid} + </foreach> + </where> + </select> +</mapper> diff --git a/sonar-db/src/main/resources/org/sonar/db/user/AuthorizationMapper.xml b/sonar-db/src/main/resources/org/sonar/db/user/AuthorizationMapper.xml new file mode 100644 index 00000000000..f33a7ae0640 --- /dev/null +++ b/sonar-db/src/main/resources/org/sonar/db/user/AuthorizationMapper.xml @@ -0,0 +1,210 @@ +<?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"> + +<mapper namespace="org.sonar.db.user.AuthorizationMapper"> + + <select id="keepAuthorizedComponentKeysForUser" parameterType="map" resultType="string"> + SELECT p.kee + FROM group_roles gr, projects p + WHERE + gr.role=#{role} + and (gr.group_id is null or gr.group_id in (select gu.group_id from groups_users gu where gu.user_id=#{userId})) + and (gr.resource_id = p.root_id or gr.resource_id = p.id) and + <foreach collection="componentKeys" open="(" close=")" item="element" index="index" separator=" or "> + p.kee=#{element} + </foreach> + UNION + SELECT p.kee + FROM user_roles ur + INNER JOIN projects p on p.id = ur.resource_id + WHERE + ur.role=#{role} + and ur.user_id=#{userId} and + <foreach collection="componentKeys" open="(" close=")" item="element" index="index" separator=" or "> + p.kee=#{element} + </foreach> + </select> + + <select id="keepAuthorizedComponentKeysForAnonymous" parameterType="map" resultType="string"> + SELECT p.kee + FROM group_roles gr, projects p + WHERE + gr.role=#{role} + and gr.group_id is null + and (gr.resource_id = p.root_id or gr.resource_id = p.id) and + <foreach collection="componentKeys" open="(" close=")" item="element" index="index" separator=" or "> + p.kee=#{element} + </foreach> + </select> + + <select id="keepAuthorizedProjectIdsForUser" parameterType="map" resultType="long"> + SELECT gr.resource_id + FROM group_roles gr + WHERE + gr.role=#{role} + and (gr.group_id is null or gr.group_id in (select gu.group_id from groups_users gu where gu.user_id=#{userId})) + and + <foreach collection="componentIds" open="(" close=")" item="element" index="index" separator=" or "> + gr.resource_id=#{element} + </foreach> + UNION + SELECT p.id + FROM user_roles ur + INNER JOIN projects p on p.id = ur.resource_id + WHERE + ur.role=#{role} + and ur.user_id=#{userId} and + <foreach collection="componentIds" open="(" close=")" item="element" index="index" separator=" or "> + p.id=#{element} + </foreach> + </select> + + <select id="keepAuthorizedProjectIdsForAnonymous" parameterType="map" resultType="long"> + SELECT gr.resource_id + FROM group_roles gr + WHERE + gr.role=#{role} + and gr.group_id is null + and + <foreach collection="componentIds" open="(" close=")" item="element" index="index" separator=" or "> + gr.resource_id=#{element} + </foreach> + </select> + + <select id="selectAuthorizedRootProjectsKeys" parameterType="map" resultType="string"> + <include refid="selectAuthorizedRootProjectsKeysQuery"/> + </select> + + <sql id="selectAuthorizedRootProjectsKeysQuery"> + <choose> + <when test="userId != null"> + SELECT p.kee as root_project_kee + FROM group_roles gr + INNER JOIN projects p on p.id = gr.resource_id AND p.module_uuid IS NULL + <where> + and gr.role=#{role} + and (gr.group_id is null or gr.group_id in (select gu.group_id from groups_users gu where + gu.user_id=#{userId})) + </where> + UNION + SELECT p.kee as root_project_kee + FROM user_roles ur + INNER JOIN projects p on p.id = ur.resource_id AND p.module_uuid IS NULL + <where> + and ur.role=#{role} + and ur.user_id = #{userId} + </where> + </when> + <otherwise> + SELECT p.kee as root_project_kee + FROM group_roles gr + INNER JOIN projects p on p.id = gr.resource_id AND p.module_uuid IS NULL + <where> + and gr.role=#{role} + and gr.group_id is null + </where> + </otherwise> + </choose> + </sql> + + <select id="selectAuthorizedRootProjectsUuids" parameterType="map" resultType="string"> + <choose> + <when test="userId != null"> + SELECT p.uuid as root_project_uuid + FROM group_roles gr + INNER JOIN projects p on p.id = gr.resource_id AND p.module_uuid IS NULL + <where> + and gr.role=#{role} + and (gr.group_id is null or gr.group_id in (select gu.group_id from groups_users gu where + gu.user_id=#{userId})) + </where> + UNION + SELECT p.uuid as root_project_uuid + FROM user_roles ur + INNER JOIN projects p on p.id = ur.resource_id AND p.module_uuid IS NULL + <where> + and ur.role=#{role} + and ur.user_id = #{userId} + </where> + </when> + <otherwise> + SELECT p.uuid as root_project_uuid + FROM group_roles gr + INNER JOIN projects p on p.id = gr.resource_id AND p.module_uuid IS NULL + <where> + and gr.role=#{role} + and gr.group_id is null + </where> + </otherwise> + </choose> + </select> + + <!-- same as selectAuthorizedRootProjectsKeysQuery but returns ids instead of keys --> + <sql id="selectAuthorizedRootProjectIdsQuery"> + <choose> + <when test="userId != null"> + SELECT p.id as root_project_id + FROM group_roles gr + INNER JOIN projects p on p.id = gr.resource_id AND p.module_uuid IS NULL + <where> + and gr.role=#{role} + and (gr.group_id is null or gr.group_id in (select gu.group_id from groups_users gu where + gu.user_id=#{userId})) + </where> + UNION + SELECT p.id as root_project_id + FROM user_roles ur + INNER JOIN projects p on p.id = ur.resource_id AND p.module_uuid IS NULL + <where> + and ur.role=#{role} + and ur.user_id = #{userId} + </where> + </when> + <otherwise> + SELECT p.id as root_project_id + FROM group_roles gr + INNER JOIN projects p on p.id = gr.resource_id AND p.module_uuid IS NULL + <where> + and gr.role=#{role} + and gr.group_id is null + </where> + </otherwise> + </choose> + </sql> + + <select id="selectGlobalPermissions" parameterType="map" resultType="String"> + <choose> + <when test="userLogin != null"> + SELECT gr.role + FROM group_roles gr + INNER JOIN groups_users gu on gu.group_id=gr.group_id + INNER JOIN users u on u.id=gu.user_id + <where> + and u.login=#{userLogin} + and gr.resource_id is null + </where> + UNION + SELECT gr.role + FROM group_roles gr + WHERE gr.group_id IS NULL AND gr.resource_id IS NULL + UNION + SELECT ur.role + FROM user_roles ur + INNER JOIN users u on u.id=ur.user_id + <where> + and u.login=#{userLogin} + and ur.resource_id is null + </where> + </when> + <otherwise> + SELECT gr.role + FROM group_roles gr + <where> + and gr.resource_id is null + and gr.group_id is null + </where> + </otherwise> + </choose> + </select> + +</mapper> diff --git a/sonar-db/src/main/resources/org/sonar/db/user/GroupMapper.xml b/sonar-db/src/main/resources/org/sonar/db/user/GroupMapper.xml new file mode 100644 index 00000000000..0991bcffc0b --- /dev/null +++ b/sonar-db/src/main/resources/org/sonar/db/user/GroupMapper.xml @@ -0,0 +1,77 @@ +<?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"> + +<mapper namespace="org.sonar.db.user.GroupMapper"> + + <sql id="groupColumns"> + g.id as id, + g.name as name, + g.description as description, + g.created_at as "createdAt", + g.updated_at as "updatedAt" + </sql> + + <select id="selectByKey" parameterType="string" resultType="Group"> + SELECT + <include refid="groupColumns"/> + FROM groups g + <where> + g.name=#{id} + </where> + </select> + + <select id="selectById" parameterType="long" resultType="Group"> + SELECT + <include refid="groupColumns"/> + FROM groups g + <where> + g.id=#{id} + </where> + </select> + + <delete id="deleteById" parameterType="long"> + DELETE FROM groups + <where> + id=#{id} + </where> + </delete> + + <select id="selectByUserLogin" parameterType="string" resultType="Group"> + SELECT + <include refid="groupColumns"/> + FROM groups g + INNER JOIN groups_users gu on gu.group_id=g.id + INNER JOIN users u on u.id=gu.user_id + <where> + u.login=#{login} + </where> + </select> + + <insert id="insert" parameterType="Group" keyColumn="id" useGeneratedKeys="true" keyProperty="id"> + INSERT INTO groups (name, description, created_at, updated_at) + VALUES (#{name}, #{description}, #{createdAt}, #{updatedAt}) + </insert> + + <update id="update" parameterType="Group"> + UPDATE groups SET + name=#{name}, + description=#{description}, + updated_at=#{updatedAt} + WHERE id=#{id} + </update> + + <select id="selectByQuery" parameterType="map" resultType="Group"> + SELECT + <include refid="groupColumns"/> + FROM groups g + WHERE UPPER(g.name) LIKE #{query} + ORDER BY UPPER(g.name) + </select> + + <select id="countByQuery" parameterType="map" resultType="int"> + SELECT count(g.id) + FROM groups g + WHERE UPPER(g.name) LIKE #{query} + </select> +</mapper> diff --git a/sonar-db/src/main/resources/org/sonar/db/user/GroupMembershipMapper.xml b/sonar-db/src/main/resources/org/sonar/db/user/GroupMembershipMapper.xml new file mode 100644 index 00000000000..36591ceea05 --- /dev/null +++ b/sonar-db/src/main/resources/org/sonar/db/user/GroupMembershipMapper.xml @@ -0,0 +1,92 @@ +<?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"> + +<mapper namespace="org.sonar.db.user.GroupMembershipMapper"> + + <sql id="commonClauses"> + FROM groups g + LEFT JOIN groups_users gu ON gu.group_id=g.id AND gu.user_id=#{userId} + <where> + <choose> + <when test="query.membership() == 'IN'"> + AND gu.user_id IS NOT NULL + </when> + <when test="query.membership() == 'OUT'"> + AND gu.user_id IS NULL + </when> + </choose> + <if test="query.groupSearch() != null"> + AND (UPPER(g.name) LIKE #{query.groupSearchSql} ESCAPE '/') + </if> + </where> + </sql> + + <select id="selectGroups" parameterType="map" resultType="GroupMembership"> + SELECT g.id as id, g.name as name, g.description as description, gu.user_id as userId + <include refid="commonClauses"/> + ORDER BY g.name + </select> + + <select id="countGroups" parameterType="map" resultType="int"> + SELECT COUNT(g.id) + <include refid="commonClauses"/> + </select> + + <select id="countUsersByGroup" parameterType="long" resultType="org.sonar.db.user.GroupUserCount"> + SELECT g.name as groupName, count(gu.user_id) as userCount + FROM groups g + LEFT JOIN groups_users gu ON gu.group_id=g.id + <where> + g.id in + <foreach collection="groupIds" open="(" close=")" item="id" separator=","> + #{id} + </foreach> + </where> + GROUP BY g.name + </select> + + <select id="selectGroupsByLogins" parameterType="string" resultType="org.sonar.db.user.LoginGroup"> + SELECT u.login as login, g.name as groupName + FROM users u + LEFT JOIN groups_users gu ON gu.user_id=u.id + INNER JOIN groups g ON gu.group_id=g.id + <where> + u.login in + <foreach collection="logins" open="(" close=")" item="login" separator=","> + #{login} + </foreach> + </where> + </select> + + <sql id="userCommonClauses"> + FROM users u + LEFT JOIN groups_users gu ON gu.user_id=u.id AND gu.group_id=#{groupId} + <where> + <choose> + <when test="query.membership() == 'IN'"> + AND gu.group_id IS NOT NULL + </when> + <when test="query.membership() == 'OUT'"> + AND gu.group_id IS NULL + </when> + </choose> + <if test="query.memberSearch() != null"> + AND ((UPPER(u.login) LIKE #{query.memberSearchSql} ESCAPE '/') OR (UPPER(u.name) LIKE #{query.memberSearchSql} + ESCAPE '/')) + </if> + AND u.active=${_true} + </where> + </sql> + + <select id="selectMembers" parameterType="map" resultType="org.sonar.db.user.UserMembershipDto"> + SELECT u.id as id, u.login as login, u.name as name, gu.group_id as groupId + <include refid="userCommonClauses"/> + ORDER BY u.name ASC + </select> + + <select id="countMembers" parameterType="map" resultType="int"> + SELECT COUNT(u.id) + <include refid="userCommonClauses"/> + </select> + +</mapper> diff --git a/sonar-db/src/main/resources/org/sonar/db/user/RoleMapper.xml b/sonar-db/src/main/resources/org/sonar/db/user/RoleMapper.xml new file mode 100644 index 00000000000..41303206013 --- /dev/null +++ b/sonar-db/src/main/resources/org/sonar/db/user/RoleMapper.xml @@ -0,0 +1,118 @@ +<?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"> + +<mapper namespace="org.sonar.db.user.RoleMapper"> + + <select id="selectUserPermissions" parameterType="map" resultType="String"> + SELECT ur.role + FROM user_roles ur + INNER JOIN users u ON u.id=ur.user_id AND u.active=${_true} + <where> + AND u.login = #{userLogin} + <choose> + <when test="resourceId != null"> + AND resource_id=#{resourceId} + </when> + <otherwise> + AND resource_id IS NULL + </otherwise> + </choose> + </where> + </select> + + <select id="selectGroupPermissions" parameterType="map" resultType="String"> + SELECT gr.role + FROM group_roles gr + <if test="isAnyOneGroup != true"> + INNER JOIN groups g ON g.id = gr.group_id + </if> + <where> + <choose> + <when test="isAnyOneGroup != true"> + AND g.name = #{groupName} + </when> + <otherwise> + AND gr.group_id IS NULL + </otherwise> + </choose> + <choose> + <when test="resourceId != null"> + AND resource_id=#{resourceId} + </when> + <otherwise> + AND resource_id IS NULL + </otherwise> + </choose> + </where> + </select> + + <insert id="insertGroupRole" parameterType="GroupRole" keyColumn="id" useGeneratedKeys="true" keyProperty="id"> + INSERT INTO group_roles (group_id, resource_id, role) + VALUES (#{groupId}, #{resourceId}, #{role}) + </insert> + + <insert id="insertUserRole" parameterType="UserRole" keyColumn="id" useGeneratedKeys="true" keyProperty="id"> + INSERT INTO user_roles (user_id, resource_id, role) + VALUES (#{userId}, #{resourceId}, #{role}) + </insert> + + <delete id="deleteGroupRole" parameterType="map"> + DELETE FROM group_roles + WHERE role=#{role} + AND + <choose> + <when test="resourceId != null"> + resource_id=#{resourceId} + </when> + <otherwise> + resource_id IS NULL + </otherwise> + </choose> + AND + <choose> + <when test="groupId != null"> + group_id=#{groupId} + </when> + <otherwise> + group_id IS NULL + </otherwise> + </choose> + </delete> + + <delete id="deleteUserRole" parameterType="map"> + DELETE FROM user_roles + WHERE user_id=#{userId} + AND role=#{role} + AND + <choose> + <when test="resourceId != null"> + resource_id=#{resourceId} + </when> + <otherwise> + resource_id IS NULL + </otherwise> + </choose> + </delete> + + <delete id="deleteGroupRolesByResourceId" parameterType="long"> + delete from group_roles where resource_id=#{id} + </delete> + + <delete id="deleteUserRolesByResourceId" parameterType="long"> + delete from user_roles where resource_id=#{id} + </delete> + + <select id="countResourceUserRoles" parameterType="long" resultType="int"> + SELECT count(id) + FROM user_roles WHERE resource_id=#{id} + </select> + + <select id="countResourceGroupRoles" parameterType="long" resultType="int"> + SELECT count(id) + FROM group_roles WHERE resource_id=#{id} + </select> + + <delete id="deleteGroupRolesByGroupId" parameterType="long"> + delete from group_roles where group_id=#{id} + </delete> +</mapper> diff --git a/sonar-db/src/main/resources/org/sonar/db/user/UserGroupMapper.xml b/sonar-db/src/main/resources/org/sonar/db/user/UserGroupMapper.xml new file mode 100644 index 00000000000..d2177b452c0 --- /dev/null +++ b/sonar-db/src/main/resources/org/sonar/db/user/UserGroupMapper.xml @@ -0,0 +1,26 @@ +<?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"> + +<mapper namespace="org.sonar.db.user.UserGroupMapper"> + + <insert id="insert" parameterType="UserGroup" useGeneratedKeys="false"> + INSERT INTO groups_users (user_id, group_id) + VALUES (#{userId}, #{groupId}) + </insert> + + <delete id="delete" parameterType="UserGroup"> + DELETE FROM groups_users + <where> + AND user_id = #{userId} + AND group_id = #{groupId} + </where> + </delete> + + <delete id="deleteMembersByGroup" parameterType="long"> + DELETE FROM groups_users + <where> + AND group_id = #{groupId} + </where> + </delete> + +</mapper> diff --git a/sonar-db/src/main/resources/org/sonar/db/user/UserMapper.xml b/sonar-db/src/main/resources/org/sonar/db/user/UserMapper.xml new file mode 100644 index 00000000000..d46d44f2eaa --- /dev/null +++ b/sonar-db/src/main/resources/org/sonar/db/user/UserMapper.xml @@ -0,0 +1,141 @@ +<?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"> + +<mapper namespace="org.sonar.db.user.UserMapper"> + + <sql id="userColumns"> + u.id as id, + u.login as login, + u.name as name, + u.email as email, + u.active as "active", + u.scm_accounts as "scmAccounts", + u.salt as "salt", + u.crypted_password as "cryptedPassword", + u.created_at as "createdAt", + u.updated_at as "updatedAt" + </sql> + + <select id="selectByLogin" parameterType="String" resultType="User"> + SELECT + <include refid="userColumns"/> + FROM users u + WHERE u.login=#{login} + </select> + + <select id="selectNullableByScmAccountOrLoginOrEmail" parameterType="map" resultType="User"> + SELECT + <include refid="userColumns"/> + FROM users u + WHERE + u.login=#{scmAccount} + OR u.email=#{scmAccount} + OR u.scm_accounts like #{likeScmAccount} + </select> + + <select id="selectUser" parameterType="long" resultType="User"> + SELECT + <include refid="userColumns"/> + FROM users u + WHERE u.id=#{id} + </select> + + <select id="selectUserByLogin" parameterType="string" resultType="User"> + SELECT + <include refid="userColumns"/> + FROM users u + WHERE u.login=#{id} AND u.active=${_true} + </select> + + <select id="selectUsersByLogins" parameterType="map" resultType="User"> + SELECT + <include refid="userColumns"/> + FROM users u WHERE + (<foreach item="login" index="index" collection="logins" open="(" separator=" or " close=")"> + u.login=#{login} + </foreach>) + </select> + + <select id="selectUsers" parameterType="map" resultType="User"> + SELECT + <include refid="userColumns"/> + FROM users u + <where> + <if test="logins != null and logins.size() > 0"> + u.login IN + <foreach item="login" index="index" collection="logins" open="(" separator="," close=")"> + #{login} + </foreach> + </if> + <if test="includeDeactivated==false"> + AND u.active=${_true} + </if> + <if test="searchText != null"> + AND (u.login LIKE #{searchTextSql} ESCAPE '/' OR u.name LIKE #{searchTextSql} ESCAPE '/') + </if> + </where> + ORDER BY u.name + </select> + + <select id="selectGroupByName" parameterType="string" resultType="Group"> + SELECT id, name, description, created_at AS "createdAt", updated_at AS "updatedAt" + FROM groups WHERE name=#{id} + </select> + + <delete id="removeUserFromGroups" parameterType="long"> + DELETE FROM groups_users WHERE user_id=#{id} + </delete> + + <delete id="deleteUserRoles" parameterType="long"> + DELETE FROM user_roles WHERE user_id=#{id} + </delete> + + <delete id="deleteUserProperties" parameterType="long"> + DELETE FROM properties WHERE user_id=#{id} + </delete> + + <delete id="deleteUnsharedUserDashboards" parameterType="long"> + DELETE FROM dashboards WHERE user_id=#{id} and shared <> ${_true} + </delete> + + <delete id="deleteUserActiveDashboards" parameterType="long"> + DELETE FROM active_dashboards WHERE user_id=#{id} + </delete> + + <delete id="deleteUnsharedUserMeasureFilters" parameterType="long"> + DELETE FROM measure_filters WHERE user_id=#{id} and shared <> ${_true} + </delete> + + <delete id="deleteUserMeasureFilterFavourites" parameterType="long"> + DELETE FROM measure_filter_favourites WHERE user_id=#{id} + </delete> + + <delete id="deleteUnsharedUserIssueFilters" parameterType="String"> + DELETE FROM issue_filters WHERE user_login=#{id} and shared <> ${_true} + </delete> + + <delete id="deleteUserIssueFilterFavourites" parameterType="String"> + DELETE FROM issue_filter_favourites WHERE user_login=#{id} + </delete> + + <update id="deactivateUser" parameterType="long"> + UPDATE users SET active=${_false}, updated_at=#{now,jdbcType=BIGINT} WHERE id=#{id} + </update> + + <insert id="insert" parameterType="User" keyColumn="id" useGeneratedKeys="true" keyProperty="id"> + INSERT INTO users (login, name, email, active, scm_accounts, salt, crypted_password, created_at, updated_at) + VALUES (#{login,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{active,jdbcType=BOOLEAN}, + #{scmAccounts,jdbcType=VARCHAR}, + #{salt,jdbcType=VARCHAR}, #{cryptedPassword,jdbcType=VARCHAR}, #{createdAt,jdbcType=BIGINT}, + #{updatedAt,jdbcType=BIGINT}) + </insert> + + <insert id="update" parameterType="User" useGeneratedKeys="false"> + UPDATE users set name=#{name,jdbcType=VARCHAR}, email=#{email,jdbcType=VARCHAR}, active=#{active,jdbcType=BOOLEAN}, + scm_accounts=#{scmAccounts,jdbcType=VARCHAR}, + salt=#{salt,jdbcType=VARCHAR}, crypted_password=#{cryptedPassword,jdbcType=BIGINT}, + updated_at=#{updatedAt,jdbcType=BIGINT} + WHERE login = #{login} + </insert> + +</mapper> |