栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis(4.28-c13)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis(4.28-c13)

1.就从JDBC开始吧 1.1. JDBC是啥

JDBC是java访问数据库的基石,JDO、Hibernate、MyBatis等只是更好的封装了JDBC。JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统(MySQL、O)、通用的SQL数据库存取和操作的公共接口(一组API)。

1.2.如何用JDBC连接数据库
spring.datasource.driver-class-name =com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/online_xdclass?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=1111

VS.

user=root//JDBC链接
password=1111
url=jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true
driverClass=com.mysql.jdbc.Driver

数据库连接

@Test
public  void testConnection5() throws Exception {
	//1.加载配置文件
    InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
    Properties pros = new Properties();
    pros.load(is);
    
    //2.读取配置信息
    String user = pros.getProperty("user");
    String password = pros.getProperty("password");
    String url = pros.getProperty("url");
    String driverClass = pros.getProperty("driverClass");

    //3.加载驱动
    Class.forName(driverClass);

    //4.获取连接
    Connection conn = DriverManager.getConnection(url,user,password);
    System.out.println(conn);

}
1.3.SQL 注入的前世今生

SQL 注入是利用某些系统没有对用户输入的数据进行充分的检查,而在用户输入数据中注入非法的 SQL 语句段或命令

SELECt user, password FROM user_table WHERe user='a' OR 1 = ' AND password = ' OR '1' = '1'

从而利用系统的 SQL 引擎完成恶意行为的做法。

对于 Java 而言,要防范 SQL 注入,只要用 PreparedStatement(从Statement扩展而来) 取代 Statement 就可以了。PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句。

1.4.两种思想
  • 面向接口编程的思想
  • ORM思想(object relational mapping)
    • 一个数据表对应一个java类
    • 表中的一条记录对应java类的一个对象
    • 表中的一个字段对应java类的一个属性
2. Mybatis

Mybatis是一个sql映射框架,提供的数据库的操作能力。增强的JDBC。减轻使用JDBC的复杂性,不用编写重复的创建 Connetion , Statement 。 不用编写关闭资源代码。直接使用java对象,表示结果数据。让开发者专注 SQL 的处理。

2.1初体验

什么是工厂设计模式

mybatis-config.xml




    
    
        
    
    
        
            
            
                
                
                
                
            
        
    

    
        
    

main

public static void main(String [] args) throws IOException {
    String resouce = "config/mybatis-config.xml";
    //读取配置文件
    InputStream inputStream =  Resources.getResourceAsStream(resouce);
    //构建Session工厂
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    //获取Session
    //这是jdk8语法(设置file > file structure > modules),可以自动关闭sqlSession 
    try(SqlSession sqlSession = sqlSessionFactory.openSession()){
        VideoMapper videoMapper = sqlSession.getMapper(VideoMapper.class);
        Video video = videoMapper.selectById(44);
        //System.out.println(video.toString());
        //通过注解
        //List

dao层的两种方式

public interface VideoMapper {
    Video selectById(@Param("video_id") int videoId);//结合XML配置文件
    List

resources下的mapper





    
    
        select * from video
    

2.2.进阶-增删改查 2.2.1.多参数模糊查询

查询指定评分,标题包含指定字符的视频

dao层

List

resources下的mapper


    select * from video where id = #{video_id,jdbcType=INTEGER}

2.3.2.sql片段

查询指定值,并不是用select * 把所有字段全部查出

 
        id,title,summary,cover_img
 
 

    select id , title as video_tile, summary, cover_img from video where id = #{video_id}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号