目录
第一点:内容文章目录介绍。
第二点:内容SSM 简称三个框架 Sping SpingMVC MyBatis .
第三点内容:对数据库的增删改查sql语句的回顾。
第四点内容:Sping框架的环境的配置。
1 创建idea项目目录;创建项目名称为MyBatis0310?? ?如何创建项目.项目结构图。
?2 将MyBatis的架包增加到lib文件中并关联项目
3 创建resources资源文件夹。将mybatis-config.xml和database.properties文件导入resources资源文件夹中。
4 开始配置mybatis-config.xml文件信息内容,打开文件会看到这些内容。
?5 开始配置mybatis-config.xml文件信息内容??
6 创建Dao层包,并把操作sql语句??
7 创建测试类:测试框架中的MyBatis可用不??
?? ?8 创建步骤分析
第五点内容:针对所有的sql语句进行查询操作。
第六点内容流程代码。
1导入所需的架包。
2建立文件框架所需要的包
3开始配饰Sping环境的
4开始编写测试类
注意:建立idea的实体类。
?你所需要的方法都在这里 set get toString() 有参 无惨 简称实体类的封装
?
5优化代码结构 .
?
第八点汇出这二次课思维导图。
?
?本章到这里结束了
第一点:内容文章目录介绍。
?
第二点:内容SSM 简称三个框架 Sping SpingMVC MyBatis .
第三点内容:对数据库的增删改查sql语句的回顾。
# 对sql数据的增删改查操作 #查询表的结构 DESC readingbook DESC book #查询表的内容 SELECT * ?FROM book SELECT * FROM readingbook #查询表的数量 ?select count(*) from book
#增加一条语句 INSERT INTO `mdb`.`book`(`id`, `name`, `author`, `price`, `count`) VALUES (12, '我是Mysql2', 'java', 34, 45)
#删除一条语句 DELETE FROM `mdb`.`book` WHERE `id` = 12
DELETE FROM `mdb`.`readingbook` WHERE `id` = 10011001
#修改一条语句 UPDATE `mdb`.`book` SET `price` = 340, `count` = 44 WHERE `id` = 11
#查询一条语句 ?select name from book where author='黑马成员' and price='30' ?
第四点内容:Sping框架的环境的配置。
1 创建idea项目目录;创建项目名称为MyBatis0310 ?? ?如何创建项目.项目结构图。
2 将MyBatis的架包增加到lib文件中并关联项目
?
?
3 创建resources资源文件夹。将mybatis-config.xml和database.properties文件导入resources资源文件夹中。
4 开始配置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">
? 5 开始配置mybatis-config.xml文件信息内容 ??
?<configuration>
? ? <!--将database.properties文件加载该文件配置文件统一管理-->
? ? <properties resource="database.properties"></properties>
? ? <!--设置项目运行配置环境-->
? ? <!--注意:default标签内容与id属性内容一致-->
? ? <environments default="davelopment">
? ? ? ? <environment id="davelopment">
? ? ? ? ? ? <!--上面是操作数据库事务管理器-->
? ? ? ? ? ? <transactionManager type="JDBC"></transactionManager>
? ? ? ? ? ? <!-- 创建和配置数据库连接池-->
? ? ? ? ? ? <dataSource type="POOLED">
? ? ? ? ? ? ? ? <!--连接数据库的四个参数 文件来自database.properties文件目录-->
? ? ? ? ? ? ? ? <property name="driver" value="${driver}"/>
? ? ? ? ? ? ? ? <property name="url" value="${url}"/>
? ? ? ? ? ? ? ? <property name="username" value="${user}"/>
? ? ? ? ? ? ? ? <property name="password" value="${password}"/>
? ? ? ? ? ? </dataSource>
? ? ? ? </environment>
? ? </environments>
</configuration>
6 创建Dao层包,并把操作sql语句 ??
?<mapper namespace="com.book.dao">
? ? <!--#查询book表中-->
? ? <!-- 在编写映射文件的sql的语句的时候,需要分析 是否传入数据 ?是否有返回值 ?并判断数据类型-->
? ? <!--resultType='int' 表示sql语句执行后,得到返回值的数据类型-->
? ? <select id="getBookNumber" resultType="int">
? ? ? ? SELECT count(*) from book
? ? </select>
</mapper>
7 创建测试类:测试框架中的MyBatis可用不 ??
?public void one() throws IOException {
? ? ? ? InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
? ? ? ? //创建sql工厂生成器
? ? ? ? SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
? ? ? ? //获得工厂对象
? ? ? ? SqlSessionFactory factory=builder.build(is);
? ? ? ? //通过工厂对象操作sql对象
? ? ? ? SqlSession ss=factory.openSession();
? ? ? ? //查询结果单个数据
? ? ? ? //命名空间加id的值
? ? ? ? ?int i= ?ss.selectOne("com.book.dao.getBookNumber");
? ? ? ? System.out.println("查询书籍的数量"+i+"本");
? ? }
?? ?8 创建步骤分析
?? ??? ?1 ? ? 创建sql工厂生成器 ?InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); ? ? ? ?? ??? ?2 ?获得工厂对象 ? SqlSessionFactory factory=builder.build(is); ?? ??? ?3 ? ?通过工厂对象操作sql对象 SqlSession ss=factory.openSession(); ?? ??? ?4 ?查询结果为单个数据 命名空间包的完整路径加上id的值 ? ? ? ? ?int i= ?ss.selectOne("com.book.dao.getBookNumber"); ?
第五点内容:针对所有的sql语句进行查询操作。
<?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">
<!--该映射文件作用:用于存储和管理需要操作的sql语句-->
<!--命名空间一般填写的是该映射文件所处在的包的路径-->
<!--命名空间+id-->
<!--数据反问层实现对数据的增删改查询的这些基础操作-->
<mapper namespace="com.book.dao">
<!--查询book表中一共有多少本书-->
<!--在编写映射文件的sql语句的时候,需要分析出是否需要传入数据,是否有返回值,并且要判断返回值类型-->
<!-- resultType="int" 作用是表示该sql语句执行结束后,得到的返回值的类型 -->
<!--不传参数 查一个数据-->
<select id="getBookNumber" resultType="int">
select count(*) from book
</select>
<!--查询书籍-->
<!--@1 MyBatis框架中使用的占位符#{字段名}等价于jdbc? ${字段名} 等价于java+连接符-->
<!--parameterType="int" 该属性控制转入的数据的数据类型的数值
-->
<select id="getBookName" resultType="String" parameterType="int">
select name from book where id=#{id}
</select>
<!--查询作者为曹雪芹 价格为100 的书名-->
<!--如果sql需要转入两个条件 parameterType=""Map集合或者自定义实体类 -->
<select id="getBookName1" resultType="String" parameterType="Map">
select name from book where author=#{author} and price=#{price}
</select>
<!--parameterType="com.book.entity.book" 实体类-->
<select id="getBookName2" resultType="String" parameterType="com.book.entity.book">
select name from book where author=#{author} and price=#{price}
</select>
<!-- Map 集合方向-->
<select id="getBookName3" parameterType="Map" resultType="com.book.entity.book" >
select id, name ,count from book where author=#{author} and price=#{price}
</select>
<!--传一个参数查多个字段数局-->
<!--查书籍编号7 的书名 作者 数量-->
<select id="getBookNameId" parameterType="int" resultType="Map" >
select name ,author,price,count from book where id=#{id}
</select>
<!--传一个参数查多个字段数端-->
<select id="getBookNameId1" parameterType="int" resultType="com.book.entity.book" >
select name ,author,price,count from book where id=#{id}
</select>
<!--list里面调用map集合或者是实体类-->
<select id="selectAll" resultType="Map">
select *from book
</select>
<!--查书名关于人字的-->
<select id="selectlike" parameterType="String" resultType="com.book.entity.book">
select *from book where name = #{name}
</select>
</mapper>
第六点内容流程代码。
1导入所需的架包。
2建立文件框架所需要的包
3开始配饰Sping环境的
4开始编写测试类
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mdb?useUnicode=true&characterEncoding=utf-8
user=root
password=@2580A369b369@
<?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">
<!-- 注释的快捷方式: ctrl+shift+/ -->
<!--添加配置标签-->
<configuration>
<!--将database.properties文件加载至该主配置文件进行统一管理-->
<properties resource="database.properties"></properties>
<!--设置项目的运行环境-->
<!--注意:default标签上填写的内容必须要和id属性的内容一致-->
<environments default="development">
<environment id="development">
<!--配置操作数据库的事务管理器-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="${driver}"></property>
<property name="url" value="${url}"></property>
<property name="username" value="${user}"></property>
<property name="password" value="${password}"></property>
</dataSource>
</environment>
</environments>
<!--将映射文件导入-->
<mappers>
<mapper resource="com/book/dao/Mapper.xml"></mapper>
</mappers>
</configuration>
<?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">
<!--该映射文件作用:用于存储和管理需要操作的sql语句-->
<!--命名空间一般填写的是该映射文件所处在的包的路径-->
<!--命名空间+id-->
<!--数据反问层实现对数据的增删改查询的这些基础操作-->
<mapper namespace="com.book.dao">
<!--查询book表中一共有多少本书-->
<!--在编写映射文件的sql语句的时候,需要分析出是否需要传入数据,是否有返回值,并且要判断返回值类型-->
<!-- resultType="int" 作用是表示该sql语句执行结束后,得到的返回值的类型 -->
<!--不传参数 查一个数据-->
<select id="getBookNumber" resultType="int">
select count(*) from book
</select>
<!--查询书籍-->
<!--@1 MyBatis框架中使用的占位符#{字段名}等价于jdbc? ${字段名} 等价于java+连接符-->
<!--parameterType="int" 该属性控制转入的数据的数据类型的数值
-->
<select id="getBookName" resultType="String" parameterType="int">
select name from book where id=#{id}
</select>
<!--查询作者为曹雪芹 价格为100 的书名-->
<!--如果sql需要转入两个条件 parameterType=""Map集合或者自定义实体类 -->
<select id="getBookName1" resultType="String" parameterType="Map">
select name from book where author=#{author} and price=#{price}
</select>
<!--parameterType="com.book.entity.book" 实体类-->
<select id="getBookName2" resultType="String" parameterType="com.book.entity.book">
select name from book where author=#{author} and price=#{price}
</select>
<!-- Map 集合方向-->
<select id="getBookName3" parameterType="Map" resultType="com.book.entity.book" >
select id, name ,count from book where author=#{author} and price=#{price}
</select>
<!--传一个参数查多个字段数局-->
<!--查书籍编号7 的书名 作者 数量-->
<select id="getBookNameId" parameterType="int" resultType="Map" >
select name ,author,price,count from book where id=#{id}
</select>
<!--传一个参数查多个字段数端-->
<select id="getBookNameId1" parameterType="int" resultType="com.book.entity.book" >
select name ,author,price,count from book where id=#{id}
</select>
<!--list里面调用map集合或者是实体类-->
<select id="selectAll" resultType="Map">
select *from book
</select>
<!--查书名关于人字的-->
<select id="selectlike" parameterType="String" resultType="com.book.entity.book">
select *from book where name = #{name}
</select>
</mapper>
注意:建立idea的实体类。
?你所需要的方法都在这里 set get toString() 有参 无惨 简称实体类的封装
?
package com.book.entity;
/*
* 自定义实体类,要保证类名的表名一致
* 全局变量的数据类型与编码的字段名的数据类型一致
*
*/
public class book {
private int id;
private String name;
private String author;
private double price;
private int count;
public book(int id, String name, String author, double price, int count) {
this.id = id;
this.name = name;
this.author = author;
this.price = price;
this.count = count;
}
public book() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
@Override
public String toString() {
return "book{" +
"id=" + id +
", name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
", count=" + count +
'}';
}
}
package com.book.test;
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.junit.Test;
import java.io.IOException;
import java.io.InputStream;
/**
* Created by admin on 2022/3/8.
*/
public class BookTest0 {
/**
* 对数据的查询操作
*/
@Test
public void two() {
//将mybatis的主配置文件加载至java代码
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建sql工厂生成器
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
//获得工厂对 象
SqlSessionFactory factory=builder.build(is);
//通过工厂对象获得操作sql语句的对象
SqlSession ss=factory.openSession();
//查询的结果是一个单个的数据
//命名空间+id的值
String name=ss.selectOne("com.book.dao.getBookName");
System.out.println("查询的书籍名称为:"+name);
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.book.test;
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.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class BookTet1 {
@Test
public void one(){
//将mybatis的主配置文件加载至java代码
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建sql工厂生成器
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
//获得工厂对象
SqlSessionFactory factory=builder.build(is);
//通过工厂对象获得操作sql语句的对象
SqlSession ss=factory.openSession();
//查询的结果是一个单个的数据
//命名空间+id的值
int i= ss.selectOne("com.book.dao.getBookNumber");
System.out.println("查询到的书籍总数量为第 :"+i+"本");
} catch (IOException e) {
e.printStackTrace();
}
}
}
5优化代码结构 .
package com.book.test;
import com.book.entity.book;
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.junit.Test;
/**
*
* 2022/3/10
*/
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
public class BookTet2 {
SqlSession ss = null;
public void init() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建sql工厂生成器
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//获得工厂对象
SqlSessionFactory factory = builder.build(is);
//通过工厂对象获得操作sql语句的对象
/* SqlSession ss = factory.openSession();*/
ss = factory.openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void one() {
//将mybatis的主配置文件加载至java代码
//查询的结果是一个单个的数据
//命名空间+id的值
init();
int i = ss.selectOne("com.book.dao.getBookNumber");
System.out.println("查询到的书籍总数量为第 :" + i + "本");
}
@Test
public void two() {
//将mybatis的主配置文件加载至java代码
//查询的结果是一个单个的数据
//命名空间+id的值
init();
/* String name=ss.selectOne("com.book.dao.getBookName",转入的数字类型);*/
String name = ss.selectOne("com.book.dao.getBookName", 2);
System.out.println("查询的书籍名称为:" + name);
}
@Test
public void three() {
/*封装到MaP集合数值名称与sql占位符保持一致*/
init();
Map<String, Object> map = new HashMap<>();
map.put("author", "曹雪芹");
map.put("price", 100);
String name = ss.selectOne("com.book.dao.getBookName1", map);
System.out.println("查询的书籍名称为:" + name);
}
@Test
public void three1() {
/*封装到MaP集合数值名称与sql占位符保持一致*/
init();
//创建book实体类
book book = new book();
book.setAuthor("曹雪芹");
book.setPrice(100);
String name = ss.selectOne("com.book.dao.getBookName2", book);
System.out.println("查询的书籍名称为:" + name);
}
@Test
public void four() {
/*封装到MaP集合数值名称与sql占位符保持一致*/
init();
Map<String ,Object> map=ss.selectOne("com.book.dao.getBookNameId",7);
System.out.println(map);
}
@Test
public void four1() {
/*封装到MaP集合数值名称与sql占位符保持一致*/
init();
//创建book实体类
book book = new book();
book=ss.selectOne("com.book.dao.getBookNameId1",123);
System.out.println(book);
}
}
package com.book.test;
/**
* 2022/3/10
*/
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.junit.Test;
import java.awt.print.Book;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BookTet4 {
SqlSession ss = null;
public void init() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建sql工厂生成器
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//获得工厂对象
SqlSessionFactory factory = builder.build(is);
//通过工厂对象获得操作sql语句的对象
/* SqlSession ss = factory.openSession();*/
ss = factory.openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
/*查询多条数据*/
@Test
public void six(){
init();
List<Map<String,Object>> books=ss.selectList("com.book.dao.selectAll");
books.forEach(map-> System.out.println(map));
}
/*查询为实体类*/
@Test
public void seven(){
init();
//MYsQL数据库中的两种通符 % 多个字符 _: 一个字符
List<Book> books=ss.selectList("com.book.dao.selectlike","%Sping%");
System.out.println(books);
books.forEach(book -> System.out.println(book));
}
@Test
public void nine(){
init();
Map<String ,Object> map=ss.selectOne("com.book.dao.getBookNameId",7);
System.out.println(map);
}
}
第八点汇出这二次课思维导图。
?
?
?
?本章到这里结束了
|