初次新建Maven项目 与 数据库互动(IDEA)
一、Maven的安装及配置
以 小项目 宠物商店 为例 实现用户登录 (用户: 名字、密码)
实现宠物的增删改查 (宠物:名字、性别、类型、年龄、价格)
实现宠物按年龄/价格排序
Maven的安装要求:已安装好jdk 并将jdk添加到系统环境变量JAVA_HOME
Maven的配置:
- 添加环境变量 Path中 和 添加MAVEN_HOME
- 配置 conf/settings.xml 文件
配置的 目的:Maven 配置本地库位置 和 配置远程镜像 网址(远程仓库要比中央仓库的连接下载速度更快)
- 在 idea中进行设置 maven (已汉化版)
二、创建新的maven 项目
基本项目层次 见图
1. 配置 maven项目中的 pom.xml 文件,用来 添加配置
1)添加管理依赖 jdbc 驱动管理依赖 和 mybatis的管理依赖
(jdbc 版本 8.0.25 本地有可以直接快捷键 alt+insert 添加,没有可到官网查找)
<!--管理依赖项-->
数据库依赖
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
mybatis依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
<scope>compile</scope>
</dependency>
</dependencies>
三、Mybatis的使用
Mybatis是 半自动化的框架 不用写 jdbc 但是要写 sql,作用是方便优化
- 使用步骤 导入依赖 -> 编写配置文件 -> 编写映射接口 -> 编写映射接口的配置文件 -> 调用映射接口
1**). 配置文件 resources 下添加 mybatis-config.xml 的配置文件**
<?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>
<settings>
<!--下划线映射骆驼命名 实体类名 petName 自动对应数据库中字段 pet_-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!--环境配置-->
<environments default="development">
<environment id="development">
<!--事务管理器-->
<transactionManager type="JDBC"></transactionManager>
**<!--数据源 对应相应的数据库 即项目需要使用的那个数据库 名字 用户 密码-->**
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db_pets?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
2)映射接口的编写Mapper(必须要有对应的实体类)编写实现增删改查的方法
public interface PetsMapper {
/**
* 显示所有宠物
*/
List<Pet> showAllPets();
//按名字查找宠物
@Select("select * from school.tb_pets where pet_name = #{name}")
Pet findPetByName(String name);
//添加宠物到系统
void addNewPet(Pet pet);
//修改指定名字的宠物
void updatePetByName(@Param("name")String name ,@Param("pet") Pet pet);
//按名字删除宠物
void deletePetByName(String name);
//按年龄排序
List<Pet> sortByAge();
//按体重排序
List<Pet> sortByPrice();
//用户登录的实现
List<User> userLink(@Param("user") String user, @Param("password") String password);
}
3)添加接口的映射配置 resources中加新的文件夹 mapper 添加 PetMapper.xml
基本的表头
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
此处连接你的接口类所在 用完整的接口路径
<!--命名空间是接口的完整路径-->
<mapper namespace="com.hopu.day8.mapper.StudentMapper">
配置插入语句 (依照插入语句语法书写id是方法名 parameterType是参数类型 #{stuName}是读取属性值)
<!--配置插入语句 -->
加红的便是对应接口的方法
<!--命名空间是接口的完整路径-->
<mapper namespace="com.hopu.anamilsstore.mapper.PetsMapper">
<!--配置插入语句-->
<insert id="addNewPet" parameterType="com.hopu.anamilsstore.entity.Pet">
insert into school.tb_pets(pet_name, pet_sex, pet_type, pet_age, pet_price) values
(#{petName},#{petSex},#{petType},#{petAge},#{petPrice})
</insert>
<!--遍历-->
<select id="showAllPets" resultType="com.hopu.anamilsstore.entity.Pet">
select * from school.tb_pets
</select>
<!--更新-->
<update id="updatePetByName" parameterType="com.hopu.anamilsstore.entity.Pet">
update school.tb_pets set
pet_name = #{pet.petName}, pet_sex = #{pet.petSex}, pet_type = #{pet.petType}, pet_age = #{pet.petAge}, pet_price = #{pet.petPrice}
where pet_name = #{name}
</update>
<!--删除-->
<delete id="deletePetByName" parameterType="com.hopu.anamilsstore.entity.Pet">
delete from school.tb_pets where pet_name = #{name}
</delete>
<!--带排序的查询-->
<select id="sortByAge" resultType="com.hopu.anamilsstore.entity.Pet">
select * from school.tb_pets order by pet_age
</select>
<select id="sortByPrice" resultType="com.hopu.anamilsstore.entity.Pet">
select * from school.tb_pets order by pet_price
</select>
<!--用户登录实现-->
<select id="userLink" resultType="com.hopu.anamilsstore.entity.User">
select * from school.tb_user where u_name = #{user} and u_password = #{password}
</select>
</mapper>
此处可用注解的方式 来代替原来配置文件中样式:
接口中:
void deletePetByName(String name);
配置文件中对应的 语句:
<!--删除-->
<delete id="deletePetByName" parameterType="com.hopu.anamilsstore.entity.Pet">
delete from school.tb_pets where pet_name = #{name}
</delete>
如果用注解的方式 直接使用SQL语句(无需配置文件)
用注解直接在接口处 使用 sql语句
@Select("sql语句")@Delete("sql语句")....
//按名字查找宠物
@Select("select * from school.tb_pets where pet_name = #{name}")
Pet findPetByName(String name);
注解的其他使用
可以使用注解 在接口中定义多个 参数完成上传
//修改指定名字的宠物
void updatePetByName(@Param("name")String name ,@Param("pet") Pet pet);
对应的配置文件中对参数的使用
<!--更新-->
<update id="updatePetByName" parameterType="com.hopu.anamilsstore.entity.Pet">
update school.tb_pets set
pet_name = #{pet.petName}, pet_sex = #{pet.petSex}, pet_type = #{pet.petType}, pet_age = #{pet.petAge}, pet_price = #{pet.petPrice}
where pet_name = #{name}
</update>
4)在mybatis中添加配置 配置对应的映射文件的位置(对上面发的照项目层次)
<!--配置映射文件的位置-->
<mappers>
<mapper resource="mapper/PetsMapper.xml"></mapper>
</mappers>
5)调用接口 创建新的java 类 进行功能的测试
基本步骤 :
创建会话器工厂
//创建会话工厂创建器
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
创建会话 连接到mybatis的配置文件
SqlSessionFactory factory = builder.build(Resources.getResourceAsStream("mybatis-config.xml"));
//创建会话
SqlSession sqlSession = factory.openSession();
获得映射接口对象连接到接口类
//获得映射接口对象
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
调用接口
mapper.接口内方法名(参数)
提交语句
//提交语句
sqlSession.commit();
此处取一例来展示
```java
/**
* app功能类
*/
public class AppDao {
//创建会话工厂创建器
static SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
Scanner scanner = new Scanner(System.in);
/**
* 展示全部宠物
*/
public void showAll(){
//创建工厂
try {
SqlSessionFactory factory = builder.build(Resources.getResourceAsStream("mybatis-configs.xml"));
//创建会话
SqlSession sqlSession = factory.openSession();
//获得映射接口对象
PetsMapper mapper = sqlSession.getMapper(PetsMapper.class);
//调用接口
List<Pet> pets = mapper.showAllPets();;
for(Pet pet : pets){
System.out.println(pet);
}
//提交语句
sqlSession.commit();
pets = null;
} catch (Exception e) {
e.printStackTrace();
}
}
结果的展示
全文参考 点击查看