本文整理自网络,侵删。
目录
- 一、用一用 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注入 不管你输出什么都会给你用单引号包起来
相关阅读 >>
python 操作mysql数据中fetchone()和fetchall()方式
mysql left join优化(10秒优化到20毫秒内)
更多相关阅读请进入《sql》频道 >>
数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » 一小时迅速入门Mybatis之Prepared Statement与符号的使用
标签:sql
相关推荐
评论
管理员已关闭评论功能...