一、Maven
1.0 Why? 为什么使用Maven
像我们平常使用jar包的时候,jar包从哪里来的?
如果从网络下载,找起来比较麻烦。
另外网络下载的时候可能下载的jar有问题,不完整(有的jar包需要依赖其他的jar包)
如果没有依赖的jar包,光下本身是会出错的
Maven都可以帮我们解决这些问题
1.1 Maven是什么?
Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。
概括地说,Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven增加可重用性并负责建立相关的任务。
Maven最初设计,是以简化Jakarta Turbine项目的建设。在几个项目,每个项目包含了不同的Ant构建文件。 JAR检查到CVS。
Apache组织开发Maven可以建立多个项目,发布项目信息,项目部署,在几个项目中JAR文件提供团队合作和帮助。
Maven主要目标是提供给开发人员:
项目是可重复使用,易维护,更容易理解的一个综合模型。
插件或交互的工具,这种声明性的模式。
Maven项目的结构和内容在一个XML文件中声明,pom.xml
项目对象模型(POM),这是整个Maven系统的基本单元。有关详细信息,请参阅Maven POM的部分。
1.2 Maven的安装和配置
Maven类似我们经常使用的迅雷。
迅雷使用的时候有2个文件夹。
一个是安装包所在的文件夹
一个是下载的文件所在的文件夹
Maven也是一样
apache-maven-3.3.9.rar:安装包
maven.rar:我提前下载好的经常使用的jar包
1.3 Maven的本地资源库\本地仓库
1.3 Maven中央存储库\远程仓库
当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 – http://repo1.maven.org/maven2/ 查找下载。
1.4 Maven Repository
http://mvnrepository.com/
1.5 Maven打包(自学)
https://blog.csdn.net/daiyutage/article/details/53739452
1.6 Maven的镜像
Maven的远程服务器在国外,而且是被屏蔽的
所以我们使用的是阿里的镜像服务器
镜像服务器就是阿里直接把maven的所有jar包都下载到他们服务器,
然后开放出来让大家使用
二、pom.xml
今后看见一个项目目录中只要带pom.xml 100%的是Maven工程
2.1 SpringMVC
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>
2.2 mysql
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
2.3 spring-jdbc
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>
2.4 文件下载
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
2.5 JSTL
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
三、Mybatis基本文件
3.1 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test4" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="course.xml"/>
</mappers>
</configuration>
3.2 SqlSessionFactory
public static void main(String[] args) throws Exception{
InputStream fis = Resources.getResourceAsStream("1.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(fis);
SqlSession session = factory.openSession();
List<User> users = session.selectList("m1.selectAll");
System.out.println(users);
session.close();
}
3.3 mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="m1">
<resultMap type="com.zhiyou100.model.User" id="User">
<result column="user_name" property="userName"/>
</resultMap>
<select id="selectAll" resultMap="User">
SELECT * from user;
</select>
</mapper>
四、无参查询
4.1 配置文件
<mapper namespace="user">
<!-- resultType:结果类型 -->
<select id="s1" resultType="com.zhiyou100.model.User">
select * from user
</select>
</mapper>
tips:
namespace:给当前mapper起个名称
id :当前查询的唯一标识
resultType:返回结果
select标签中写sql语句
4.2 代码
public static void m1() throws Exception{
InputStream is = Resources.getResourceAsStream("1.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
List<User> users = session.selectList("user.s1");
System.out.println(users);
session.close();
}
tips:
user.s1对应的是namespace.id
五、带参数查询
5.1 配置文件
<select id="s2" resultType="com.zhiyou100.model.User" parameterType="String">
select * from user
where
user_name like
concat('%',#{0},'%');
</select>
tips:
parameterType参数类型
#{0}:代表第几个参数
5.2 代码
//有参查询
public static void m2() throws Exception {
InputStream is = Resources.getResourceAsStream("1.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
List<User> users = session.selectList("user.s2","2");
System.out.println(users);
session.close();
}
六、删除
6.1 配置
<delete id="deleteById" parameterType="int">
delete from user where id
= #{0}
</delete>
6.2 代码
public static void m3() throws Exception{
InputStream is = Resources.getResourceAsStream("1.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
session.delete("user.deleteById", 4);
//提交删除事件
session.commit();
session.close();
}
七、修改
<update id="update" parameterType="com.zhiyou100.model.User">
update user
set
user_name = #{user_name},
user_password = #{user_password},
user_url = #{user_url}
where
id = #{id}
</update>
public static void m5() throws Exception {
InputStream is = Resources.getResourceAsStream("1.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
User user = new User();
user.setId(13);
user.setUser_name("哈哈哈");
user.setUser_password("123456");
user.setUser_url("2.jpg");
session.update("user.update",user);
session.commit();
session.close();
}
八、添加
<insert id="add" parameterType="com.zhiyou100.model.User">
INSERT INTO `user` VALUES (null,#{user_name},#{user_password},#{user_url});
</insert>
public static void m4() throws Exception {
InputStream is = Resources.getResourceAsStream("1.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
User user = new User();
user.setUser_name("haaha");
user.setUser_password("1233321");
user.setUser_url("1.jpg");
session.insert("user.add", user);
session.commit();
session.close();
}
九、总结
mapper:单个映射文件的总节点
namespace:mapper的命名空间
select、delete、insert、update:增删改查
parameterType:参数类型
resultType:结果类型
十、DAO与Mybatis结合
10.1 Model类
package com.zhiyou100.model;
public class Subject {
private Integer id;
private String subject_name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSubject_name() {
return subject_name;
}
public void setSubject_name(String subject_name) {
this.subject_name = subject_name;
}
@Override
public String toString() {
return "Subject [id=" + id + ", subject_name=" + subject_name + "]";
}
}
10.2 接口类型
package com.zhiyou100.dao;
import java.util.List;
public interface BaseDAO <E>{
public void add(E e);
public void deleteById(Integer id);
public void update(E e);
public List<E> queryAll();
public E queryById(Integer id);
}
10.3 映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.zhiyou100.dao.SubjectDAO">
<insert id="add" parameterType="com.zhiyou100.model.Subject">
insert into subject values
(null,#{subject_name})
</insert>
<delete id="deleteById" parameterType="int">
delete from subject where
id = #{id}
</delete>
<update id="update" parameterType="com.zhiyou100.model.Subject">
update subject
set
subject_name = #{subject_name}
where
id = #{id}
</update>
<select id="queryAll" resultType="com.zhiyou100.model.Subject">
select * from subject
</select>
<select id="queryById" parameterType="int"
resultType="com.zhiyou100.model.Subject">
select * from subject
where
id = #{id}
</select>
</mapper>
tips:
1.namespace必须是包名.接口名
2.增删改查的id必须为方法名
3.映射文件代替的之前的实现类