目录
4月21号MyBatis的入门程序和环境配置(第一课回顾)查询学生表的数量
第三步配置database.properties文件中的四个参数。
第五步建立包名为com.student.dao层在Mapper.xml文件中写下以下内容。
4月22号在此基础上对MyBatis框架深入学习.对Mysql数据的增伤改查。MyBatis对数据操作的第一种方式。
insert into student (name,sex,age,phone,address) values (#{name},#{sex},#{age},#{phone},#{address})
select *from book where name = #{name}
将database.properties文件加载至该主配置文件进行统一管理,将连接数据库的四个参数导入文件中
第四个标签:environment包含在environments里面。
注意default标签上填写的内容必须要和id属性的内容一致。
第五个标签:transactionManager:配置操作数据库的事务管理器。
4月22号在此基础上对MyBatis框架深入学习.对Mysql数据的增伤改查。MyBatis对数据操作的第二种方式。MyBatis注解的方式。
C:\Users\MZFAITHDREAM\AppData\Roaming\Typora\typora-user-images截图图片路径。
第一点:对数据操作的第三种方式。MyBatis接口加配置文件进行叙述.这种方案基于第一种方案和第二种方案的基础之上。回顾上面几次课的属性。
定义方法的返回值的类型必须与映射文件 resultType属性数据类型一致
方法中的形参数对应映射文件中parameterType=""的参数内容
4月23号针对MyBatis数据的增删改查的的第四种方案不使用配置文件
com.book.dao.IBookDo在这个接口中定义文件的增删改查。
4月21号MyBatis的入门程序和环境配置(第一课回顾)查询学生表的数量
第一步:导入MyBatis的框架的架包.
第二步将resources文件转换为资源文件。
第三步配置database.properties文件中的四个参数。
配置数据库的连接池:driver | com.mysql.cj.jdbc.Driver |
---|---|
数据库的地址:url | url=jdbc:mysql://localhost:3306/mdb?useUnicode=true&characterEncoding=utf-8 |
数据库的姓名:user | root |
数据库的的密码 | 123456 |
##
namespace | namespace="com.book.dao"导入Mapper.xml文件包名 |
---|---|
resource | resource="你要将Mapper.xml文件中"导入完整的路径 |
resultType="int" | resultType="表示该sql语句执行结束后,得到的返回值的类型" |
Mybatis的占位符 | MyBatis框架中使用的占位符#{字段名}等价于jdbc? ${字段名} 等价于java+连接符 |
parameterType | 该属性控制转入的数据的数据类型的数值 |
第四步配置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> -->
<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>
</configuration>
<!--将映射文件导入到此文件中-->
<mappers>
<mapper resource="com/student/dao/Mapper.xml"></mapper>
<!--<mapper resource="com.student.dao.IStudentTest"></mapper>-->
<!--文件注册-->
</mappers>
第五步建立包名为com.student.dao层在Mapper.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.student.dao.Mapper">
<select id="getStudentNumber" resultType="int">
select count(*) from student
</select>
</mapper>
第六步建立测试类用于测试MyBatis程序是否成功。
package com.student.test;
import com.student.entity.Student;
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.beans.Transient;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class StudentTet1 {
SqlSession ss = null;
public void init() {
//@1 将mybatis的主配置文件加载至java代码
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//@2创建sql工厂`生成器
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//@3获得工厂对象
SqlSessionFactory factory = builder.build(is);
//@4通过工厂对象获得操作sql语句的对象
ss = factory.openSession();
//@5查询的结果是一个单个的数据
} catch (IOException e) {
e.printStackTrace();
}
}
/*查询学生数量*/
@Test
public void Number() {
init();
int i = ss.selectOne("com.student.dao.Mapper.getStudentNumber");
System.out.println("查询到的学生总数量为第 :" + i + "本");
System.out.println(ss);
第七步运行结果如下说明你的MyBatis程序配置成功。
4月22号在此基础上对MyBatis框架深入学习.对Mysql数据的增伤改查。MyBatis对数据操作的第一种方式。
重点内容:数据的增删改查的基础操作从易到难
<select id="getStudentNumber" resultType="int"> select count(*) from student</select>查询数据 |
---|
<insert id="addStudent" parameterType="map">insert into student (name,sex,age,phone,address) values (#{name},#{sex},#{age},#{phone},#{address})</insert>增加数据 |
<delete id="deleteBook" parameterType="String">delete from student where id =#{id} </delete> 删除数据 |
<update id="updateStudent" parameterType="com.student.entity.Student"> update student set sex=#{sex},age=#{age}, address=#{address} where id=#{id}</update>修改数据 |
1查询学生的所有名单
@Test
public void select() {
init();
/*list跳调用Map集合*/
List<Map<String, Object>> students = ss.selectList("com.student.dao.Mapper.selectStudent");
students.forEach(map -> System.out.println(map));
}
2增加一条学生的名单。
/*增加一条语句的内容*/
@Test
public void insert() {
//Map集合的方式存放数据
init();
Map<String, Object> map = new HashMap<>();
map.put("name", "王五");
map.put("sex", "男");
map.put("age", "56");
map.put("phone", "189675478");
map.put("address", "江西南昌");
int i = ss.insert("com.student.dao.Mapper.addStudent", map);
ss.commit();
if (i > 0) {
System.out.println("增加成功");
}
}
3查询书籍指定的id名
<!--查询书籍-->
<!--@1 MyBatis框架中使用的占位符#{字段名}等价于jdbc? ${字段名} 等价于java+连接符-->
<!--parameterType="int" 该属性控制转入的数据的数据类型的数值
-->
<select id="getBookName" resultType="String" parameterType="int">
select name from book where id=#{id}
</select>
@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);
}
4查询作者为曹雪芹 价格为123 的书名
@Test
public void three() {
/*封装到MaP集合数值名称与sql占位符保持一致*/
init();
Map<String, Object> map = new HashMap<>();
map.put("author", "曹雪芹");
map.put("price", 123);
String name = ss.selectOne("com.book.dao.getBookName1", map);
System.out.println("查询的书籍名称为:" + name);
}
5查询作者为曹雪芹 价格为123 的书名
@Test
public void three1() {
/*封装到MaP集合数值名称与sql占位符保持一致*/
init();
//创建book实体类
book book = new book();
book.setAuthor("曹雪芹");
book.setPrice(123);
String name = ss.selectOne("com.book.dao.getBookName2", book);
System.out.println("查询的书籍名称为:" + name);
}
6查书籍编号1 的书名 作者 价格.
<!--传一个参数查多个字段数局-->
<!--查书籍编号1 的书名 作者 价格-->
<select id="getBookNameId" parameterType="int" resultType="Map" >
select name ,author,price from book where id=#{id}
</select>
@Test
public void four() {
/*封装到MaP集合数值名称与sql占位符保持一致*/
init();
Map<String, Object> map = ss.selectOne("com.book.dao.getBookNameId", 1);
System.out.println(map);
}
7传一个参数查多个字段。
<!--传一个参数查多个字段数端-->
<select id="getBookNameId1" parameterType="int" resultType="com.book.entity.book" >
select name ,author,price,count from book where id=#{id}
</select>
/*封装到MaP集合数值名称与sql占位符保持一致*/
@Test
public void four1() {
/*封装到MaP集合数值名称与sql占位符保持一致*/
init();
//创建book实体类
book book = new book();
book = ss.selectOne("com.book.dao.getBookNameId1", 1);
System.out.println(book);
}
8修改数据信息。
<update id="updateBook" parameterType="com.book.entity.book">
update book set price=#{price} where id=#{id}
</update>
@Test
public void nine() {
init();
book book = new book();
book.setPrice(134);
book.setId(2);
int i = ss.update("com.book.dao.updateBook", book);
ss.commit();
if (i > 0) {
System.out.println("修改成功");
}
}
9删除表中的一条数据
<delete id="deleteBook" parameterType="String">
delete from book where name =#{name}
</delete>
@Test
public void ten() {
init();
int i = ss.update("com.book.dao.deleteBook", "人生的意义");
ss.commit();
if (i > 0) {
System.out.println("删除成功");
}
}
10查询多条数据
/*查询多条数据*/
@Test
public void six(){
init();
List<Map<String,Object>> books=ss.selectList("com.book.dao.selectAll");
books.forEach(map-> System.out.println(map));
}
11模糊查询 Spring这本书
/*查询为实体类*/
@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));
}
4月23号在此基础上对MyBatis框架深入学习第二课。
A-1:mybatis-config配置五年级细节讲述。
第一个标签:configuration添加环境配置标签
第二个标签:properties。
第三个标签:environments:设置项目的运行环境。
第四个标签:environment包含在environments里面。
注意default标签上填写的内容必须要和id属性的内容一致。
第五个标签:transactionManager:配置操作数据库的事务管理器。
第六个标签:dataSource:配置数据库的四个参数。
第七个标签:mappers:将映射文件导入。
<!-- 注释的快捷方式: 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>
4月22号在此基础上对MyBatis框架深入学习.对Mysql数据的增伤改查。MyBatis对数据操作的第二种方式。MyBatis注解的方式。
C:\Users\MZFAITHDREAM\AppData\Roaming\Typora\typora-user-images截图图片路径。
第一步配置MyBatis的环境设置。
<?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> -->
<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 class="com.book.dao.IBookDo"></mapper>
</mappers>
</configuration>
第二步数据库实操。
1查询book表中的图书数量。
public interface IBookDo {
//查询book表中的图书数量
@Select(" select count(*) from book")
//对应的方法名称
int getCount();
}
//注意这是接口文件哦
public SqlSession ss = null;
public IBookDo dao = null;
public void init() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
// SqlSessionFactoryBuilder().build(is).openSession()
ss = new SqlSessionFactoryBuilder().build(is).openSession();
dao = ss.getMapper(IBookDo.class);
} catch (IOException e) {
e.printStackTrace();
}
}
//定义init方法
2查询书籍编号为10的书名
//查询书籍编号为2的书名 @param
//转入参数的时候需要增加@Param注解 该注解中的设置的变量名需要的变量名和占位符一致
@Select("select name from book where id=#{id}")
String getNameId(@Param("id") int id);
@Test
public void two() {
init();
String nameId = dao.getNameId(11);
System.out.println(nameId);
}
3查询所有的书籍信息
//查询所有数据 返回值 List<Map<String, Object>> List<Map<Book book>>
@Select(" select *from book")
List<Map<String, Object>> selectAll();
//查询所有的书籍信息
@Test
public void tree() {
init();
List<Map<String, Object>> books = dao.selectAll();
books.forEach(map -> System.out.println(map));
}
4查询书名为“人生的意义盒子”作者 价格 数量.
// \查询书名为“人生的意义盒子”作者 价格 数量
@Select("select author,price,count,from book where name=#{name}")
Map<String, Object> getBook(@Param("name") String name);
5查询书名的作者为三国价格为34
//查询多个参数查序多个字段
@Select(" select name,id,count from book where author=#{author} and price=#{price}")
Map<String, Object> getBookInfo(@Param("author") String author, @Param("price") int price);
@Test
public void four() {
init();
Map<String, Object> map = dao.getBookInfo("小明", 34);
System.out.println(map);
System.out.println("输出结果为空");
}
6查询多个参数查序多个字段.方法二。
@Select(" select id,name,count from book where author=#{author} and price=#{price}")
Map<String, Object> getBookInfo1(Map<String, Object> map);
@Test
public void four1() {
init();
Map<String, Object> m = new HashMap<>();
m.put("author", "小明");
m.put("price", 34);
Map<String, Object> map = dao.getBookInfo1(m);
System.out.println(map);
}
7增加数据库的表名为book中一条记录
//<!--将所有图书信息id降序排列 desc从大到小 升序 asc-->
//@Select("select *from book order by id desc")
//增加语句
@Insert("insert into book(name,author,price,count) values (#{name},#{author},#{price},#{count})")
int addBook(Book book);
@Test
public void six() {
init();
// @Insert("insert into book(id,name,author) values (#{id},#{name},#{author})")
Book book = new Book(0, "我的世界", "《java》", 23, 45);
int i = dao.addBook(book);
ss.commit();
if (i > 0) {
System.out.println("增加成功");
}else {
System.out.println("增加数据没有成功");
}
}
8修改数据库的表名为book中一条记录
//修改语句
// 2 利用mysql修改语句<update> id parameterType resultType -->
@Update("update book set price=#{price},count=#{count} where id=#{id}")
int updateBook(Map<String, Object> map);
@Test
public void seven() {
init();
Map<String, Object> map = new HashMap<>();
map.put("id", 15);
map.put("price", 20);
map.put("count", 1200);
int i = dao.updateBook(map);
ss.commit();
if (i > 0) {
System.out.println("数据修改成功");
}else{
System.out.println("数据修改失败");
}
}
9删除一条数据库的表名为book中的所有记录
//删除一条语句
//@3利用mysql删除语句<delete> id parameterType resultType
@Delete("delete from book ")
int deleteAll();
// 数据删除成功
@Test
public void eight() {
init();
int i = dao.deleteAll();
ss.commit();
if (i > 0) {
System.out.println("数据删除成功");
} else {
System.out.println("数据删除失败");
}
}
10限制条件查询。
@Select("select * from book limit #{start},#{count}")
List<Map<String,Object>> getBooktLimit(@Param("start")int start,@Param("count")int count);
java
@Test
public void nine(){
// 查询数量的限制
init();
List<Map<String, Object>> studentLimit = dao.getBooktLimit(2, 4);
studentLimit.forEach(map-> System.out.println(map));
}
@Select("select * from book where count>#{count}")
List<Map<String,Object>> getBookList(@Param("count") int count);
@Test
public void five(){
init();
List<Map<String, Object>> studentList = dao.getBookList(67);
studentList.forEach(map-> System.out.println(map));
System.out.println("选择数量>67的所有数据类型");
}
4月23号在此基础上对MyBatis框架深入学习.对Mysql数据的增伤改查。
第一点:对数据操作的第三种方式。MyBatis接口加配置文件进行叙述.这种方案基于第一种方案和第二种方案的基础之上。回顾上面几次课的属性。
namespace | namespace="com.book.dao"导入Mapper.xml文件包名 |
---|---|
resource | resource="你要将Mapper.xml文件中"导入完整的路径 |
resultType="int" | resultType="表示该sql语句执行结束后,得到的返回值的类型" |
Mybatis的占位符 | MyBatis框架中使用的占位符#{字段名}等价于jdbc? ${字段名} 等价于java+连接符 |
parameterType | 该属性控制转入的数据的数据类型的数值 |
第二点接口的定义,接口如何定义的标准。
创建接口的三条标准:
定义方法的返回值的类型必须与映射文件 resultType属性数据类型一致
定义的方法名称一定要与执行sql语句的id属性中的名称一致
方法中的形参数对应映射文件中parameterType=""的参数内容
第三点案例实操。
1 查询书籍的数量。
<!--@1查询书籍数量-->
<select id="getCount" resultType="int" >
select count(*) from book
</select>
该类为接口
/*定义查询书籍数量的的方法名称*/
int getCount();jav
package Com.Book.Test;
import Com.Book.Dao.IBookDao;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BookTest {
public SqlSession ss = null;
// public SqlSession dao=null;
public void init() {
// 将主配置文件转换成输入流
try {
/*四句合并成两句*/
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
ss = new SqlSessionFactoryBuilder().build(is).openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void one() {
init();
IBookDao dao = ss.getMapper(IBookDao.class);
int count = dao.getCount();
System.out.println("查序书籍的数量为" + count + "本");
}
}
2 转入一个参数 id 在控制台中 输出书名
<!--@2转入一个参数的书名-->
<select id="getNameId" parameterType="int" resultType="String" >
select name from book where id=#{id}
</select>
/*转入一个参数的书名-*/
/*<select id="getNameId" parameterType="int" resultType="String" >*/
String getNameId(int id);
@Test
//查书籍名称
public void two() {
init();
IBookDao dao = ss.getMapper(IBookDao.class);
String name = dao.getNameId(14);
System.out.println("查序书籍的数量为" + name);
}
3查询所有的学生信息
<!--查序所以学生的信息-->
<select id="selectAll" resultType="Map">
select *from student
</select>
/*注意查询多条数据的时候,一定是List<Map>或者自定义实体类*/
/*but List<Map<String, Object>>*/
List<Map<String, Object>> selectAll();
@Test
public void three() {
init();
IStudentDao dao = ss.getMapper(IStudentDao.class);
List<Map<String, Object>> student = dao.selectAll();
student.forEach(map -> System.out.println(map));
}
4 将所有图书信息id降序排列小 desc从大到小排序。
<!--转参数加多条数据-->
<!--将所有图书信息id降序排列小 desc从大到 升序 asc-->
<select id="selectOrder" resultType="Map">
select *from book order by id desc
</select>
/*<!--将所有图书信息id降序排列 desc从大到小 升序 asc-->*/
/* <select id="selectOrder" resultType="Map">*/
List<Map<String, Object>> selectOrder();
@Test
public void six() {
init();
IBookDao dao = ss.getMapper(IBookDao.class);
List<Map<String, Object>> books = dao.selectOrder();
books.forEach(map -> System.out.println(map));
}
5 增加
<!-- 增 如果想取除字段名 将整张表的字段名加上-->
<insert id="addBook" parameterType="Map">
insert into book values (#{id},#{name},#{author},#{price},#{count})
</insert>
// <insert id="addBook" parameterType="Map">
int addBook(Map<String, Object> Map);
@Test
public void seven() {
init();
Map<String, Object> map = new HashMap<>();
map.put("id", null);
map.put("name", "AAAA");
map.put("author", "AAAA");
map.put("price", 100);
map.put("count", 67);
IBookDao dao = ss.getMapper(IBookDao.class);
int i = dao.addBook(map);
ss.commit();
if (i > 0) {
System.out.println("增加成功");
}
}
6 修改
<update id="updateBook" parameterType="Map">
update book set price=#{price},count=#{count} where id=#{id}
</update>
// <update id="updateBook" parameterType="Map">
int updateBook(Map<String, Object> Mapjava
@Test
public void nine() {
init();
Map<String, Object> map = new HashMap<>();
map.put("id", 10);
map.put("name", "gjs");
IBookDao dao = ss.getMapper(IBookDao.class);
int i = dao.updateBook(map);
ss.commit();
if (i > 0) {
System.out.println("修改成功");
}else {
System.out.println("修改失败");
}
7 删除
<!--删除-->
<delete id="deleteBook" parameterType="Map">
delete from book where id between #{id1} and #{id2}
</delete>
//<delete id="deleteBook" parameterType="Map">
int deleteBook(Map<String, Object> Map);
public void nine() {
init();
Map<String, Object> map = new HashMap<>();
map.put("id1", 11);
map.put("id2", 12);
IBookDao dao = ss.getMapper(IBookDao.class);
int i = dao.deleteBook(map);
ss.commit();
if (i > 0) {
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
4月23号针对MyBatis数据的增删改查的的第四种方案不使用配置文件
回顾下面表格的属性。
namespace | namespace="com.book.dao"导入Mapper.xml文件包名 |
---|---|
resource | resource="你要将Mapper.xml文件中"导入完整的路径 |
resultType="int" | resultType="表示该sql语句执行结束后,得到的返回值的类型" |
Mybatis的占位符 | MyBatis框架中使用的占位符#{字段名}等价于jdbc? ${字段名} 等价于java+连接符 |
parameterType | 该属性控制转入的数据的数据类型的数值 |
<?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> -->
<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 class="com.book.dao.IBookDo"></mapper>
</mappers>
</configuration>
com.book.dao.IBookDo在这个接口中定义文件的增删改查。
1 查询书本的数量。
//查询book表中的图书数量
@Select(" select count(*) from book")
//对应的方法名称
int getCount();
package com.book.test;
import com.book.dao.IBookDo;
import com.book.entity.Book;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 2022/3/17
*/
public class BookTest {
public SqlSession ss = null;
public IBookDo dao = null;
public void init() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
// SqlSessionFactoryBuilder().build(is).openSession()
ss = new SqlSessionFactoryBuilder().build(is).openSession();
dao = ss.getMapper(IBookDo.class);
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void one() {
init();
int count = dao.getCount();
System.out.println("查询书籍的数量" + count + "本");
}
}
2增加一条数据库的语句内容。
//<!--将所有图书信息id降序排列 desc从大到小 升序 asc-->
//@Select("select *from book order by id desc")
//增加语句
@Insert("insert into book(name,author,price,count) values (#{name},#{author},#{price},#{count})")
int addBook(Book book);
@Test
public void six() {
init();
// @Insert("insert into book(id,name,author) values (#{id},#{name},#{author})")
Book book = new Book(0, "我的世界", "《java1》", 23, 45);
int i = dao.addBook(book);
ss.commit();
if (i > 0) {
System.out.println("增加成功");
}else {
System.out.println("增加数据没有成功");
}
}
@3修改数据信息。
@Test
public void seven() {
init();
Map<String, Object> map = new HashMap<>();
map.put("id",20);
map.put("price", 20);
map.put("count", 1200);
int i = dao.updateBook(map);
ss.commit();
if (i > 0) {
System.out.println("数据修改成功");
}else{
System.out.println("数据修改失败");
}
}
4删除语句信息
//删除一条语句
//@3利用mysql删除语句<delete> id parameterType resultType
@Delete("delete from book ")
int deleteAll();
5查询
//查询书籍编号为2的书名 @param
//转入参数的时候需要增加@Param注解 该注解中的设置的变量名需要的变量名和占位符一致
@Select("select name from book where id=#{id}")
String getNameId(@Param("id") int id);
//查询所有数据 返回值 List<Map<String, Object>> List<Map<Book book>>
@Select(" select *from book")
List<Map<String, Object>> selectAll();
// 查询书名为“人生的意义盒子”作者 价格 数量
@Select("select author,price,count,from book where name=#{name}")
Map<String, Object> getBook(@Param("name") String name);
//查询多个参数查序多个字段
@Select(" select name,id,count from book where author=#{author} and price=#{price}")
Map<String, Object> getBookInfo(@Param("author") String author, @Param("price") int price);
//查询多个参数查序多个字段方法二
@Select(" select id,name,count from book where author=#{author} and price=#{price}")
Map<String, Object> getBookInfo1(Map<String, Object> map);
package com.book.test;
import com.book.dao.IBookDo;
import com.book.entity.Book;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 2022/3/17
*/
public class BookTest {
public SqlSession ss = null;
public IBookDo dao = null;
public void init() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
// SqlSessionFactoryBuilder().build(is).openSession()
ss = new SqlSessionFactoryBuilder().build(is).openSession();
dao = ss.getMapper(IBookDo.class);
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void one() {
init();
int count = dao.getCount();
System.out.println("查询书籍的数量" + count + "本");
}
@Test
public void two() {
init();
String nameId = dao.getNameId(11);
System.out.println(nameId);
}
//查询所有的书籍信息
@Test
public void tree() {
init();
List<Map<String, Object>> books = dao.selectAll();
books.forEach(map -> System.out.println(map));
}
@Test
public void four() {
init();
Map<String, Object> map = dao.getBookInfo("小明", 34);
System.out.println(map);
System.out.println("输出结果为空");
}
@Test
public void four1() {
init();
Map<String, Object> m = new HashMap<>();
m.put("author", "小明");
m.put("price", 34);
Map<String, Object> map = dao.getBookInfo1(m);
System.out.println(map);
}
@Test
public void six() {
init();
// @Insert("insert into book(id,name,author) values (#{id},#{name},#{author})")
Book book = new Book(0, "我的世界", "《java1》", 23, 45);
int i = dao.addBook(book);
ss.commit();
if (i > 0) {
System.out.println("增加成功");
}else {
System.out.println("增加数据没有成功");
}
}
@Test
public void seven() {
init();
Map<String, Object> map = new HashMap<>();
map.put("id",20);
map.put("price", 20);
map.put("count", 1200);
int i = dao.updateBook(map);
ss.commit();
if (i > 0) {
System.out.println("数据修改成功");
}else{
System.out.println("数据修改失败");
}
}
@Test
public void nine(){
// 查询数量的限制
init();
List<Map<String, Object>> studentLimit = dao.getBooktLimit(2, 4);
studentLimit.forEach(map-> System.out.println(map));
}
@Test
public void five(){
init();
List<Map<String, Object>> studentList = dao.getBookList(67);
studentList.forEach(map-> System.out.println(map));
System.out.println("选择数量>67的所有数据类型");
}
// 数据删除成功
@Test
public void eight() {
init();
int i = dao.deleteAll();
ss.commit();
if (i > 0) {
System.out.println("数据删除成功");
} else {
System.out.println("数据删除失败");
}
}
}