SSM第6天Maven和MyBatis

一、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.映射文件代替的之前的实现类
发布了19 篇原创文章 · 获赞 17 · 访问量 6270

猜你喜欢

转载自blog.csdn.net/s3219153/article/details/104646799