首页 > 数据库 >特殊SQL的执行

特殊SQL的执行

时间:2022-09-25 02:44:32浏览次数:48  
标签:username 特殊 String tableName Param SQLMapper user SQL 执行

1、模糊查询

/**
* 测试模糊查询
* @param mohu
* @return
*/
List<User> testMohu(@Param("mohu") String mohu);
<!--List<User> testMohu(@Param("mohu") String mohu);-->
<select id="testMohu" resultType="User">
<!--select * from t_user where username like '%${mohu}%'-->
<!--select * from t_user where username like concat('%',#{mohu},'%')-->
select * from t_user where username like "%"#{mohu}"%"
</select>

2、批量删除

/**
* 批量删除
* @param ids
* @return
*/
int deleteMore(@Param("ids") String ids);
<!--int deleteMore(@Param("ids") String ids);-->
<delete id="deleteMore">
delete from t_user where id in (${ids})
</delete>

3、动态设置表名

/**
* 动态设置表名,查询所有的用户信息
* @param tableName
* @return
*/
List<User> getAllUser(@Param("tableName") String tableName);
<!--List<User> getAllUser(@Param("tableName") String tableName);-->
<select id="getAllUser" resultType="User">
select * from ${tableName}
</select>

4、添加功能获取自增的主键

t_clazz(clazz_id,clazz_name) t_student(student_id,student_name,clazz_id)

1、添加班级信息

2、获取新添加的班级的id

3、为班级分配学生,即将某学的班级id修改为新添加的班级的id

/**
* 添加用户信息
* @param user
* @return
* useGeneratedKeys:设置使用自增的主键
* keyProperty:因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的参
数user对象的某个属性中
*/
int insertUser(User user);
<!--int insertUser(User user);-->
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into t_user values(null,#{username},#{password},#{age},#{sex})
</insert>

这里的意思是将新增的数据的ID放入实体类,

因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的参数user对象的某个属性中

在这里就遇到了不能加引号的情况,所以只能使用${}

实例

 

public interface SQLMapper {

    /**
     * 根据用户名模糊查询用户信息
     */
    List<User> getUserByLike(@Param("username") String username);

    /**
     * 批量删除
     */
    int deleteMore(@Param("ids") String ids);

    /**
     * 查询指定表中的数据
     */
    List<User> getUserByTableName(@Param("tableName") String tableName);

    /**
     * 添加用户信息
     */
    void insertUser(User user);

}

 

<?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="com.atguigu.mybatis.mapper.SQLMapper">

    <!--List<User> getUserByLike(@Param("username") String username);-->
    <select id="getUserByLike" resultType="User">
        <!--select * from t_user where username like '%${username}%'-->
        <!--select * from t_user where username like concat('%',#{username},'%')-->
        select * from t_user where username like "%"#{username}"%"
    </select>

    <!--int deleteMore(@Param("ids") String ids);-->
    <delete id="deleteMore">
        delete from t_user where id in (${ids})
    </delete>

    <!--List<User> getUserByTableName(@Param("tableName") String tableName);-->
    <select id="getUserByTableName" resultType="User">
        select * from ${tableName}
    </select>

    <!--
        void insertUser(User user);
        useGeneratedKeys:设置当前标签中的sql使用了自增的主键
        keyProperty:将自增的主键的值赋值给传输到映射文件中参数的某个属性
    -->
    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
        insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})
    </insert>

</mapper>
public class SQLMapperTest {

    @Test
    public void testGetUserByLike(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
        List<User> list = mapper.getUserByLike("a");
        System.out.println(list);
    }

    @Test
    public void testDeleteMore(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
        int result = mapper.deleteMore("1,2,3");
        System.out.println(result);
    }

    @Test
    public void testGetUserByTableName(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
        List<User> list = mapper.getUserByTableName("t_user");
        System.out.println(list);
    }

    @Test
    public void testInsertUser(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
        User user = new User(null, "王五", "123", 23, "男", "[email protected]");
        mapper.insertUser(user);
        System.out.println(user);
    }

    @Test
    public void testJDBC() throws Exception {
        Class.forName("");
        Connection connection = DriverManager.getConnection("", "", "");
        PreparedStatement ps = connection.prepareStatement("insert", Statement.RETURN_GENERATED_KEYS);
        ps.executeUpdate();
        ResultSet resultSet = ps.getGeneratedKeys();
    }
}

 

标签:username,特殊,String,tableName,Param,SQLMapper,user,SQL,执行
From: https://www.cnblogs.com/dzs894330350/p/16727127.html

相关文章

  • MySQL相关知识
    一、SQL分类:DDL;数据定义语言;凡是带有create、drop、alter等数据定义语言(主要操作的是表的结构,不是表的数据。)DQL:数据查询语言;凡是带有select关键字的都是数据......
  • MySQL双主同步的实现
    双主复制:在两个节点上都可以写入数据,互为主从节点。解决单点失败的问题:一个主节点失败,所有节点都会失败。双主配置:(1)各节点使用一个惟一server_id(2)都......
  • MYSQL锁机制行锁、表锁、死锁的实现
    一、MYSQL锁是什么?有什么类别锁定义: 同一时间同一个资源只能被一个线程访问 乐观锁和悲观锁乐观锁用的最多的就是数据库中的表加了一个标识字段version 例如......
  • MySQL主从复制常见问题及解决方法
    在从节点清除信息前提:停止slave的相关线程:stopslaveRESETSLAVE#从服务器清除master.info,relay-log.info,relaylog,开始新的relaylogRESETSLAVE ALL#清除所......
  • sql注入 sql-labs过关实战学习
      一、SQL注入原理SQL注入就是把SQL命令插入到Web表单然后提交到所在页面请求(查询字符串),从而达到欺骗服务器执行恶意的SQL命令。(页面请求包括get、post等)它是利用现在......
  • 为什么MySQL 默认隔离级别是RR,又被阿里设置为RC
    我们知道,我们可以通过这个命令查看数据库当前的隔离级别,MySQL默认隔离级别是RR. select@@tx_isolation; ANSI/ISOSQL定义的标准隔离级别有四种,从高到底依次为:可序......
  • mysql将字符串类型字段后面的小数点和零去掉
    背景现有student表,表中的学生年龄student_age字段中的值,是通过读取excel中的信息后更新到数据库中,但是因为处理不当,导致年龄的均带有.0,如28.0实际上应该是28。我们需要将......
  • 13.7 特殊方法 __add__ , __len__
     '''#两个整数类型的对象的相加操作'''a=20b=100c=a+b#两个整数类型的对象的相加操作d=a.__add__(b)print(c)print(d)'''字符串等相加用类中设置__add__的......
  • 13.6 特殊属性 __dict__等
     classC(A,B):def__init__(self,name,age):self.name=nameself.age=ageclassD(A):pass#创建C类的对象x=C('Jack',20)......
  • sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2026, '
    sqlalchemy.exc.OperationalError:(MySQLdb._exceptions.OperationalError)(2026,'SSLconnectionerror:unknownerrornumber')问题:使用sqlalchemy查询mysql数据时......