网站备案地点选择,江门那里做公司网站好,上海网页制作与网站设计,flash做游戏下载网站一、Maven介绍 1.概念#xff1a; Maven项目对象模型(POM)#xff0c;可以通过一小段描述信息来管理项目的构建#xff0c;报告和文档的项目管理工具软件。 2.为啥使用maven: 之前项目中需要引入大量的jar包。这些jar从网上下载#xff0c;可能下载地址不同意。这些jar之间…一、Maven介绍 1.概念 Maven项目对象模型(POM)可以通过一小段描述信息来管理项目的构建报告和文档的项目管理工具软件。 2.为啥使用maven: 之前项目中需要引入大量的jar包。这些jar从网上下载可能下载地址不同意。这些jar之间可能存在冲突。我们应该有一个软件帮你完成jar的下载。这个工具就是maven。 主要和jar包有关系... 3.maven 工作原理 4.安装Maven和配置
如果本地之前安装过maven。不需要在装。
Download Apache Maven – Maven 5.idea关联本地maven⭐⭐ 6.ieda创建Maven项目⭐⭐
1.maven的Java工程 2 maven的javaweb工程 7.然后把之前那个图书管理系统导入maven项目里面
二、Mybatis框架
1.什么是mybatis 1. MyBatis 是一款优秀的持久层框架它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射实体类型、接口和 Java POJOPlain Old Java Objects普通老式 Java 对象为数据库中的记录。 2 .框架: 别人写好的一个半成品工程。我们只需要安装指定的配置来使用这个半成品。 持久层框架: 就是与数据库交互的框架。---简化我们操作数据库表记录的一个框架。 ORM框架: Object Relative Mapping . 表----实体类 字段---属性 一条记录----对象 多条记录----对象集合 2.为什么使用mybatis
(这次主要和数据库的jdbc有关是为了简化数据库jdbc的代码)
这是之前的连接数据库的操作BaseDao 原来的jdbc操作数据库代码中可以看出我们操作数据库非常麻烦。需要手动设置占位符的值而且需要手动封装处理结果集。 我们可以使用mybatis完成上面繁琐的操作。
Mybatis就是为了简化java操作数据库的代码。
3.如何使用mybatis:
先手建一个工程然后在创建maven的java工程并引入依赖
1.pom.xml:引入依赖 ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdmybatis01/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependencies!--mysql依赖--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.33/version/dependency!--单元测试--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.2/version!-- scopetest/scope--/dependency!--lombok依赖--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.34/version/dependency!--mybatis框架的依赖--dependencygroupIdrepMaven.org.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.9/version/dependency/dependencies/project 2.创建实体类 package org.example.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** className: User* author: Zyl* date: 2024/12/11 9:11* Version: 1.0* description:*/
Data
AllArgsConstructor
NoArgsConstructorpublic class User {private Integer id;private String name;private Integer age;private String salary;public User(String name, Integer age, String salary) {this.name name;this.age age;this.salary salary;}
}3.mybatis配置文件---不需要背
在resources下面新建一个文件mybatis.xml,然后配置 ?xml version1.0 encodingUTF-8?
!DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configurationenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC /dataSource typePOOLED!--name是固定的 value根据需要配置为自己的内容--property namedriver valuecom.mysql.cj.jdbc.Driver /property nameurl valuejdbc:mysql://localhost:3306/mybatis /property nameusername valueroot /property namepassword valueroot //dataSource/environment/environments
!-- lt;!ndash;引入映射文件ndash;gt;mappersmapper resourcemapper/UserMapper.xml//mappers--!--引入映射文件--mappersmapper resourcemapper/UserMapper2.xml//mappers/configuration 4.编写映射文件---不需要背
在resources下面建一个目录mapper,在目录下建一个和实体类对应的 映射文件UserMapper.xml(这是我的User实体表)
主要是用来编写sql语句的UserMapper.xml: ?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
!--namespace:命名空间。现在可以随便写。后期需要和接口所在的包对应--
mapper namespaceqy179!--select表示查询sql标签id:表示sql语句的唯一标识通常使用mapper接口的全类名.方法名组成resultType:表示结果类型。 mysql执行完该sql后返回的数据类型#{id}:表示占位符。mybatis会自动给该占位符赋值--select idgetById resultTypeorg.example.entity.Userselect * from user where id#{id}/select!--删除语句--delete iddeleteByIddelete from user where id#{id}/delete!--增加语句--!--增、删、改\返回的类型都是int 所以不用写resultType--insert idinsertById insert into user(name,age,salary) values(#{name},#{age},#{salary})/insert!--修改语句--!--#{name},#{age},#{salary}必须和实体类的属性名一致--update idupdateByIdupdate user set name#{name},age#{age},salary#{salary} where id#{id}/update!--查询所有的语句--select idgetAll resultTypeorg.example.entity.Userselect * from user/select/mapper 5.把映射文件放到配置中 6.单元测试 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 org.example.entity.User;
import org.junit.Test;import java.io.InputStream;
import java.util.List;/*** className: Test01* author: Zyl* date: 2024/12/11 9:35* Version: 1.0* description:*/public class Test01 {Testpublic void test01() throws Exception{//测试不用写//1.读取mybatis的配置文件InputStream resourceAsStream Resources.getResourceAsStream(mybatis.xml);//2.创建SqlSessionFactory工厂--获取SqlSession对象SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取SqlSession对象--理解为java与数据库的一次会话SqlSession sqlSession sqlSessionFactory.openSession();//4.执行写的sql语句//括号里第一个String statement.表示sql的标志namespaceid;// 括号里第二个参数Object parameter.表示sql的参数User user sqlSession.selectOne(qy179.getById, 1);System.out.println(user);}Testpublic void test02() throws Exception{//删除语句//1.读取mybatis的配置文件InputStream resourceAsStream Resources.getResourceAsStream(mybatis.xml);//2.创建SqlSessionFactory工厂--获取SqlSession对象SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取SqlSession对象--理解为java与数据库的一次会话SqlSession sqlSession sqlSessionFactory.openSession();//4.执行写的sql语句int row sqlSession.delete(qy179.deleteById, 1);System.out.println(影响的行数row);//提交数据sqlSession.commit();}Testpublic void test03() throws Exception{//增加语句//1.读取mybatis的配置文件InputStream resourceAsStream Resources.getResourceAsStream(mybatis.xml);//2.创建SqlSessionFactory工厂--获取SqlSession对象SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取SqlSession对象--理解为java与数据库的一次会话SqlSession sqlSession sqlSessionFactory.openSession();//4.执行写的sql语句//构造函数User user new User(zyl, 23, 10000);int rowsqlSession.insert(qy179.insertById,user );System.out.println(影响的行数row);//提交sqlSession.commit();}Testpublic void test04() throws Exception{//修改语句//1.读取mybatis的配置文件InputStream resourceAsStream Resources.getResourceAsStream(mybatis.xml);//2.创建SqlSessionFactory工厂--获取SqlSession对象SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取SqlSession对象--理解为java与数据库的一次会话SqlSession sqlSession sqlSessionFactory.openSession();//4.执行写的sql语句User user new User(4, hahhah, 18, 5471);int rowsqlSession.update(qy179.updateById,user );System.out.println(影响的行数row);//提交sqlSession.commit();}Testpublic void test05() throws Exception{//查询所有的数据//1.读取mybatis的配置文件InputStream resourceAsStream Resources.getResourceAsStream(mybatis.xml);//2.创建SqlSessionFactory工厂--获取SqlSession对象SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取SqlSession对象--理解为java与数据库的一次会话SqlSession sqlSession sqlSessionFactory.openSession();//4.执行写的sql语句ListUser objects sqlSession.selectList(qy179.getAll);System.out.println(objects);//提交sqlSession.commit();}}4.使用接口绑定模式
为了优化错误
1.dao接口 2.映射文件也得重写一下
UserMapper2.xml: ?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
!--namespace:命名空间。现在可以随便写。后期需要和接口所在的包对应
这一次qy179就要改成 对应的接口名字了--
mapper namespaceorg.example.dao.UserDaoinsert idaddinsert into user(name,age,salary) values(#{name},#{age},#{salary})/insertupdate idupdateupdate user set name#{name},age#{age},salary#{salary} where id#{id}/updatedelete iddeleteByIddelete from user where id#{id}/delete!--select表示查询sql标签id:表示sql语句的唯一标识通常使用mapper接口的全类名.方法名组成resultType:表示结果类型。 mysql执行完该sql后返回的数据类型#{id}:表示占位符。mybatis会自动给该占位符赋值--select idgetById resultTypeorg.example.entity.Userselect * from user where id#{id}/selectselect idselectAll resultTypeorg.example.entity.Userselect * from user/select
/mapper 3.再次测试 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 org.example.dao.UserDao;
import org.example.entity.User;
import org.junit.Test;import java.io.InputStream;
import java.util.List;/*** className: Test02* author: Zyl* date: 2024/12/11 11:50* Version: 1.0* description:*/public class Test02 {Testpublic void test01() throws Exception{//根据id查询数据//1.读取mybatis的配置文件InputStream resourceAsStream Resources.getResourceAsStream(mybatis.xml);//2.创建SqlSessionFactory工厂--获取SqlSession对象SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取SqlSession对象--理解为java与数据库的一次会话SqlSession sqlSession sqlSessionFactory.openSession();//为接口实现代理实现类UserDao userDao sqlSession.getMapper(UserDao.class);User byId userDao.getById(4);System.out.println(byId);}Testpublic void test02() throws Exception{//增加数据//1.读取mybatis的配置文件InputStream resourceAsStreamResources.getResourceAsStream(mybatis.xml);//2.创建SqlSessionFactory工厂--获取SqlSession对象SqlSessionFactory sqlSessionFactorynew SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取SqlSession对象--理解为java与数据库的一次会话SqlSession sqlSessionsqlSessionFactory.openSession();//为接口实现代理实现类UserDao userDaosqlSession.getMapper(UserDao.class);User usernew User(www,23,10000);int rowuserDao.add(user);System.out.println(影响的行数row);//提交sqlSession.commit();}Testpublic void test03() throws Exception{//查询所有的数据//1.读取mybatis的配置文件InputStream resourcesAsStreamResources.getResourceAsStream(mybatis.xml);//2.创建SqlSessionFactory工厂--获取SqlSession对象SqlSessionFactory sqlSessionFactorynew SqlSessionFactoryBuilder().build(resourcesAsStream);//3.获取SqlSession对象--理解为java与数据库的一次会话SqlSession sqlSessionsqlSessionFactory.openSession();//为接口实现代理实现类UserDao userDaosqlSession.getMapper(UserDao.class);ListUser useruserDao.selectAll();System.out.println(user);//提交sqlSession.commit();}Testpublic void test04() throws Exception{//删除数据//1.读取mybatis的配置文件InputStream resourceAsStreamResources.getResourceAsStream(mybatis.xml);//2.创建SqlSessionFactory工厂--获取SqlSession对象SqlSessionFactory sqlSessionFactorynew SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取SqlSession对象--理解为java与数据库的一次会话SqlSession sqlSessionsqlSessionFactory.openSession();//为接口实现代理实现类UserDao userDaosqlSession.getMapper(UserDao.class);int rowuserDao.deleteById(8);System.out.println(影响的行数row);//提交数据sqlSession.commit();}Testpublic void test05() throws Exception{//修改数据//读取mybatis的配置文件InputStream resourcesAsStreamResources.getResourceAsStream(mybatis.xml);//2.创建SqlSessionFactory工厂SqlSessionFactory sqlSessionFactorynew SqlSessionFactoryBuilder().build(resourcesAsStream);//3.获取SqlSession对象SqlSession sqlSessionsqlSessionFactory.openSession();//4.为接口实现代理实现类UserDao userDaosqlSession.getMapper(UserDao.class);User unew User(4, 石昊, 18, 5471);int row userDao.update(u);System.out.println(影响的行数row);//提交sqlSession.commit();}
}