一小时迅速入门Mybatis之Prepared Statement与符号的使用
2023-01-04 12:44:27 作者:admin
本文整理自网络,侵删。
目录
- 一、用一用 PreparedStatement
- 二、用一用 Statement
- 三、Mybatis #{} ${} 的使用
- 四、ResultMap ResultType的区别
引入Mysql的Jar包以及表结构前几篇已经有了这里就不赘述了
一、用一用 PreparedStatement
import java.math.BigDecimal;import java.sql.*;/** * 一个生活在互联网底层,做着增删改查的码农,不谙世事的造作 * @create 2021-08-25 21:26 */public class TestMain { public static void main(String[] args) throws Exception { Connection conn = null; PreparedStatement stmt = null; ResultSet result = null; try { // 1. 注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2. 打开连接 url 、 用户名、 密码 conn = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/test?useSSL=false", "root", "123456"); // 3. 创建Statenebt stmt = conn.prepareStatement("select * from test where name = ?"); // 4. 设置参数 注意啦,参数下标是从1开始的 不是0哦 stmt.setString(1, "小强"); // 5. 执行查询 result = stmt.executeQuery(); // 6. 输出数据库获取的结果 while (result.next()){ // 根据列名称获取值 String name = result.getString("name"); BigDecimal salary = result.getBigDecimal("salary"); System.out.println(name+" 的工资是:"+salary); } } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 // 关闭资源 try{ if(result!=null) { result.close(); } }catch(SQLException se2){ System.err.println("关闭result异常"); } try{ if(stmt!=null) { stmt.close(); } }catch(SQLException se2){ System.err.println("关闭stmt异常"); } try{ if(conn!=null) { conn.close(); } }catch(SQLException se){ System.err.println("关闭conn异常"); } } }}
二、用一用 Statement
import java.math.BigDecimal;import java.sql.*;/** * 一个生活在互联网底层,做着增删改查的码农,不谙世事的造作 */public class TestMain02 { public static void main(String[] args) throws Exception { Connection conn = null; Statement stmt = null; ResultSet result = null; try { // 1. 注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2. 打开连接 url 、 用户名、 密码 conn = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/test?useSSL=false", "root", "123456"); // 3. 创建Statenebt stmt = conn.createStatement(); // 4. 执行查询 result = stmt.executeQuery("select * from test where name = '小强'"); // 5. 输出数据库获取的结果 while (result.next()){ // 根据列名称获取值 String name = result.getString("name"); BigDecimal salary = result.getBigDecimal("salary"); System.out.println(name+" 的工资是:"+salary); } } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 // 关闭资源 try{ if(result!=null) { result.close(); } }catch(SQLException se2){ System.err.println("关闭result异常"); } try{ if(stmt!=null) { stmt.close(); } }catch(SQLException se2){ System.err.println("关闭stmt异常"); } try{ if(conn!=null) { conn.close(); } }catch(SQLException se){ System.err.println("关闭conn异常"); } } }}
三、Mybatis #{} ${} 的使用
#{}使用
// #{} 根据名称查询数据List<TestEntity> listByName01(String name);
<!--#{} 查询数据--><select id="listByName01" resultType="testentity"> select * from test where name = #{name}</select>
import dao.TestMapper;import entity.TestEntity;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;import java.util.List;/** * 一个生活在互联网底层,做着增删改查的码农,不谙世事的造作 */public class TestMain03 { public static void main(String[] args) throws Exception { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); try (SqlSession session = sqlSessionFactory.openSession()) { // 通过sesson获取Mapper 这个Mapper会编程Mybatis的代理Mapper TestMapper mapper = session.getMapper(TestMapper.class); // 1.#{} List<TestEntity> res = mapper.listByName01("小强"); // 这个执行的sql : select * from test where name = '小强 ' System.out.println("第一次查询条数:"+res.size()); List<TestEntity> res02 = mapper.listByName01("小强 or 1=1"); // 这个执行的sql: select * from test where name = '小强 or 1=1' System.out.println("第二次查询条数:"+res02.size()); } }}
${}使用
// ${} 根据名称查询数据List<TestEntity> listByName02(@Param("name") String name);
<!--${} 查询数据--><select id="listByName02" resultType="testentity"> select * from test where name = ${name}</select>
import dao.TestMapper;import entity.TestEntity;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;import java.util.List;/** * 一个生活在互联网底层,做着增删改查的码农,不谙世事的造作 */public class TestMain04 { public static void main(String[] args) throws Exception { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); try (SqlSession session = sqlSessionFactory.openSession()) { // 通过sesson获取Mapper 这个Mapper会编程Mybatis的代理Mapper TestMapper mapper = session.getMapper(TestMapper.class); // 1.${} 这里还得自己加个单引号 要不然sql就不对了 List<TestEntity> res = mapper.listByName02("'小强'"); // 执行的sql: select * from test where name = '小强' System.out.println("第一次:"+res.size()); List<TestEntity> res02 = mapper.listByName02("'小强 ' or 1=1 "); // 执行的sql(可怕哦): select * from test where name = '小强 ' or 1=1 System.out.println("第二次:"+res02.size()); } }}
#{}
使用的是PrepareStatment 用的是 ‘?' 占位符 不会被SQL注入 不管你输出什么都会给你用单引号包起来
阅读剩余部分
相关阅读 >>
hql和sql的区别是什么
利用navicat工具快速生成sql语句
在sql查询中group by的含义是什么
删除表字段的sql语句有哪些?
sql怎么删除某一行
插入sql语句怎么写
sql语句中含有乘号报错的处理办法
sql server是什么意思
ios sqlite对数据库的各种操作(日常整理全)
数据库操作中常用的sql命令
更多相关阅读请进入《sql》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
猜你喜欢
联络方式:
400-123-789
邮箱:xiachao@163.com
Q Q:12345678
微信公众号
微信二维码