JavaEE中用eclipse学习Mybatis查询的快速上手(1)

编程入门 行业动态 更新时间:2024-10-14 18:14:49

JavaEE中用eclipse学习Mybatis查询的快速<a href=https://www.elefans.com/category/jswz/34/1765339.html style=上手(1)"/>

JavaEE中用eclipse学习Mybatis查询的快速上手(1)

JavaEE中用eclipse学习Mybatis查询的快速上手(1)

小编是用过去做的网上书城的项目的数据库来作为本次的教程材料

目录

  • Mybatis查询上手教程1
  • 一、创建数据库
  • 二、创建web项目
    • 小编的创建包:
  • 三、数据库配置文件
  • 三、Mybatis配置文件
  • 四、日志信息打印文件
  • 五、编写对应的类
    • 1、domian
      • (1)Book.java
      • (2)BookTyps.java
      • (3)Reader.java
    • 2、utlis
      • MybatisUtils.java
    • 3、test
      • MybatisTest
  • 六、编写对应XML文件
    • 1、BookMapper.xml
    • 2、BookTypsMapper.xml
    • 3、ReaderMapper.xml
  • 总结


Mybatis查询上手教程1

一、创建数据库

小编的所用的数据库是Mysql数据库

将小编的代码复制粘贴到一个TXT的文件里,并命名为library,然后将文件后缀名改为sql就可以进行导入了,建议用软件进行导入,如果用黑屏终端你要注意改变中文字符的编码,不然中文在黑屏终端的显示会是乱码。

数据库名为:library

/*
SQLyog Ultimate v12.08 (64 bit)
MySQL - 5.5.40 : Database - library
*********************************************************************
*//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`library` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `library`;/*Table structure for table `book` */DROP TABLE IF EXISTS `book`;CREATE TABLE `book` (`bookid` char(10) NOT NULL COMMENT '图书编号',`bookname` varchar(20) NOT NULL COMMENT '图书名称',`typeid` int(11) DEFAULT NULL COMMENT '类别编号',`bookauthor` varchar(20) DEFAULT NULL COMMENT '图书作者',`bookpublisher` varchar(50) DEFAULT NULL COMMENT '出版社',`bookprice` double DEFAULT NULL COMMENT '图书价格',`borrowsum` int(11) DEFAULT NULL COMMENT '借阅次数',PRIMARY KEY (`bookid`),KEY `typeid` (`typeid`),CONSTRAINT `book_ibfk_1` FOREIGN KEY (`typeid`) REFERENCES `booktyps` (`typeid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `book` */insert  into `book`(`bookid`,`bookname`,`typeid`,`bookauthor`,`bookpublisher`,`bookprice`,`borrowsum`) values ('013452','离散数学',2,'张小新','机械工业出版社',45.5,10),('R/345677','中医的故事',8,'李奇德','国防工业出版社',20,5),('TH/2345','机械设计手册',7,'黄明凡','人民邮电出版社',40,10),('TP/3452','JSP程序设计案例',3,'刘城清','电子工业出版社',42.8,8),('TP39/1712','Java程序设计',3,'陈永红','机械工业出版社',35.3,30);/*Table structure for table `bookborrow` */DROP TABLE IF EXISTS `bookborrow`;CREATE TABLE `bookborrow` (`borrowid` char(10) NOT NULL COMMENT '借阅号',`bookbarcode` char(20) NOT NULL COMMENT '图书条码',`readerid` char(10) NOT NULL COMMENT '读者编号',`borrowtime` datetime DEFAULT NULL COMMENT '借书日期',`returntime` datetime DEFAULT NULL COMMENT '还书日期',`borrowstatus` varchar(4) DEFAULT NULL COMMENT '借阅状态',PRIMARY KEY (`borrowid`),KEY `bookbarcode` (`bookbarcode`),KEY `readerid` (`readerid`),CONSTRAINT `bookborrow_ibfk_1` FOREIGN KEY (`bookbarcode`) REFERENCES `bookstorage` (`bookbarcode`),CONSTRAINT `bookborrow_ibfk_2` FOREIGN KEY (`readerid`) REFERENCES `reader` (`readerid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `bookborrow` */insert  into `bookborrow`(`borrowid`,`bookbarcode`,`readerid`,`borrowtime`,`returntime`,`borrowstatus`) values ('001328','132789','0017','2011-01-24 00:00:00','2011-02-28 00:00:00','已还'),('001356','145234','0018','2011-02-12 00:00:00','2011-02-27 00:00:00','已还'),('001432','132782','0016','2011-03-04 00:00:00','2011-04-05 00:00:00','已还'),('001435','145321','0021','2011-08-09 00:00:00','2011-09-02 00:00:00','已还'),('001578','156833','0034','2011-10-01 00:00:00','2011-11-01 00:00:00','未还'),('001679','345214','0042','2011-02-21 00:00:00','2011-03-05 00:00:00','未还');/*Table structure for table `bookstorage` */DROP TABLE IF EXISTS `bookstorage`;CREATE TABLE `bookstorage` (`bookbarcode` char(20) NOT NULL COMMENT '图书条码',`bookid` char(10) NOT NULL COMMENT '图书编号',`bookintime` datetime DEFAULT NULL COMMENT '图书入馆时间',`bookstatus` varchar(4) DEFAULT NULL COMMENT '图书状态',PRIMARY KEY (`bookbarcode`),KEY `bookid` (`bookid`),CONSTRAINT `bookstorage_ibfk_1` FOREIGN KEY (`bookid`) REFERENCES `book` (`bookid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `bookstorage` */insert  into `bookstorage`(`bookbarcode`,`bookid`,`bookintime`,`bookstatus`) values ('132782','TP39/1712','2009-08-10 00:00:00','在馆'),('132789','TP39/1712','2009-08-10 00:00:00','借出'),('145234','013452','2008-12-06 00:00:00','借出'),('145321','TP/3452','2007-11-04 00:00:00','借出'),('156833','TH/2345','2009-12-04 00:00:00','借出'),('345214','R/345677','2008-11-03 00:00:00',NULL);/*Table structure for table `booktyps` */DROP TABLE IF EXISTS `booktyps`;CREATE TABLE `booktyps` (`typeid` int(11) NOT NULL COMMENT '类别编号',`typename` varchar(20) DEFAULT NULL COMMENT '类别名称',PRIMARY KEY (`typeid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `booktyps` */insert  into `booktyps`(`typeid`,`typename`) values (0,'人文景观'),(1,'自然科学'),(2,'数学'),(3,'计算机'),(4,'建设水利'),(5,'旅游地理'),(6,'励志/自我实现'),(7,'工业技术'),(8,'基础医学'),(9,'室内设计');/*Table structure for table `reader` */DROP TABLE IF EXISTS `reader`;CREATE TABLE `reader` (`readerid` char(10) NOT NULL COMMENT '读者编号',`readername` varchar(20) NOT NULL COMMENT '读者姓名',`readerpass` varchar(20) NOT NULL COMMENT '读者密码',`retypeid` int(11) DEFAULT NULL COMMENT '类别编号',`readerdate` datetime DEFAULT NULL COMMENT '发证日期',`readerstatus` varchar(4) DEFAULT NULL COMMENT '借书证状态',PRIMARY KEY (`readerid`),KEY `retypeid` (`retypeid`),CONSTRAINT `reader_ibfk_1` FOREIGN KEY (`retypeid`) REFERENCES `readertype` (`reypeid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `reader` */insert  into `reader`(`readerid`,`readername`,`readerpass`,`retypeid`,`readerdate`,`readerstatus`) values ('0016','苏小东','123456',1,'1999-08-09 00:00:00','有效'),('0017','张明','123456',1,'2010-09-10 00:00:00','有效'),('0018','梁君红','123456',1,'2010-09-10 00:00:00','有效'),('0021','赵清远','123456',2,'2010-07-01 00:00:00','有效'),('0034','李瑞清','123456',3,'2009-08-03 00:00:00','有效'),('0042','张明月','123456',4,'1997-04-23 00:00:00','有效'),('0076','余小清','123456',2,NULL,NULL);/*Table structure for table `readertype` */DROP TABLE IF EXISTS `readertype`;CREATE TABLE `readertype` (`reypeid` int(11) NOT NULL COMMENT '类别编号',`typename` varchar(20) NOT NULL COMMENT '类别名称',`borrowquantity` int(11) NOT NULL COMMENT '可借数量',`borrowday` int(11) DEFAULT NULL COMMENT '可借天数',PRIMARY KEY (`reypeid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `readertype` */insert  into `readertype`(`reypeid`,`typename`,`borrowquantity`,`borrowday`) values (1,'学生',10,30),(2,'教师',20,60),(3,'管理员',15,30),(4,'职工',15,20);/*Table structure for table `v_books` */DROP TABLE IF EXISTS `v_books`;/*!50001 DROP VIEW IF EXISTS `v_books` */;
/*!50001 DROP TABLE IF EXISTS `v_books` */;/*!50001 CREATE TABLE  `v_books`(`图书名` varchar(20) ,`分类名` varchar(20) ,`作者` varchar(20) ,`出版社会` varchar(50) ,`价格` double 
)*/;/*View structure for view v_books *//*!50001 DROP TABLE IF EXISTS `v_books` */;
/*!50001 DROP VIEW IF EXISTS `v_books` */;/*!50001 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_books` AS select `book`.`bookname` AS `图书名`,`booktyps`.`typename` AS `分类名`,`book`.`bookauthor` AS `作者`,`book`.`bookpublisher` AS `出版社会`,`book`.`bookprice` AS `价格` from (`book` join `booktyps` on((`book`.`typeid` = `booktyps`.`typeid`))) */;/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

二、创建web项目


如果和小编的不一样没有显示这个动态web项目就:



如果还没有你可能就需要重装你的eclipse了。

小编的创建包:

三、数据库配置文件

小编的数据库是5开头的所已用的是以下两条代码连接数据库
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///library

如果数据库是8开头或者比8更高的用这两条代码连接数据库
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis?serverTimezone=GMT%2B8&useSSL=false

记得要不用的那些用#号注释或者删除

如果和小编的的数据库名字与密码不一样的记得要也要改,要知道不是数据库名,是登录myaql数据库时的名字与密码。

文件名为:db.properties

#mysql5以下
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///library
#mysql8以上
#jdbc.driver=com.mysql.cj.jdbc.Driver
#jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis?serverTimezone=GMT%2B8&useSSL=false
jdbc.username=root
jdbc.password=root

三、Mybatis配置文件

小编不建议你自己写了,直接用把会改就可以了

如果你的包名和小编的不一样的话,下面的name要改为你要扫描的那个包

<!--使用扫描包的形式定义别名 -->
<typeAliases><package name="com.ppx.mybatis.domian" />
</typeAliases>

如果你定义的包名和XML名字和小编的不一样的话,下面的resource改为你写的那个XML文件的路径

<!--配置Mapper的位置 --><mappers><mapper resource="com/ppx/mybatis/mapper/BookTypsMapper.xml" /><mapper resource="com/ppx/mybatis/mapper/BookMapper.xml" /><mapper resource="com/ppx/mybatis/mapper/ReaderMapper.xml" /></mappers>

文件名为:mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis//DTD Config 3.0//EN"".dtd">
<configuration><!-- 加载数据库配置文件db.properties --><properties resource="db.properties" /><!-- 配置参数 --><settings><!-- 使用LOG4J日志 --><setting  name="logImpl"  value="LOG4J" /><!-- 延迟加载,默认false表示立即加载,true表示所有关联对象都会延迟加载。特定关联查询中通过fetchType可以覆盖该项的延迟加载设置。 -->  <setting name="lazyLoadingEnabled" value="true" />  <!-- 积极加载/预加载,默认false,表示延迟加载。  --> <setting name="aggressiveLazyLoading" value="false"/>    </settings>	<!--使用扫描包的形式定义别名 --><typeAliases><package name="com.ppx.mybatis.domian" /></typeAliases><!--配置环境 ,默认的环境id为mysql --><environments default="mysql"><!-- 配置id为mysql的数据库环境 --><environment id="mysql"><!-- 使用JDBC的事务管理 --><transactionManager type="JDBC" /><!--数据库连接池 --><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></dataSource></environment></environments><!--配置Mapper的位置 --><mappers><mapper resource="com/ppx/mybatis/mapper/BookTypsMapper.xml" /><mapper resource="com/ppx/mybatis/mapper/BookMapper.xml" /><mapper resource="com/ppx/mybatis/mapper/ReaderMapper.xml" /></mappers>
</configuration>

四、日志信息打印文件

如果你的包名和小编的不一样的话,下面的这条代码

log4j.logger.ppx.mybatis=DEBUG

log4j.logger.XXX=DEBUG

XXX写你要使用日志打印的的上一级的包

如:com.ppx.mybatis.domian
的上一级就是 com.ppx.mybatis

文件名为:log4j.properties

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.ppx.mybatis=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - [\u65E5\u5FD7\u4FE1\u606F]%m%n

五、编写对应的类

1、domian

(1)Book.java

package com.ppx.mybatis.domian;public class Book {private String bookid;private String bookname;private BookTyps bookTyps;private String bookauthor;private String bookpublisher;private double bookprice;private int borrowsum;public String getBookid() {return bookid;}public void setBookid(String bookid) {this.bookid = bookid;}public String getBookname() {return bookname;}public void setBookname(String bookname) {this.bookname = bookname;}public BookTyps getBookTyps() {return bookTyps;}public void setBookTyps(BookTyps bookTyps) {this.bookTyps = bookTyps;}public String getBookauthor() {return bookauthor;}public void setBookauthor(String bookauthor) {this.bookauthor = bookauthor;}public String getBookpublisher() {return bookpublisher;}public void setBookpublisher(String bookpublisher) {this.bookpublisher = bookpublisher;}public double getBookprice() {return bookprice;}public void setBookprice(double bookprice) {this.bookprice = bookprice;}public int getBorrowsum() {return borrowsum;}public void setBorrowsum(int borrowsum) {this.borrowsum = borrowsum;}@Overridepublic String toString() {return "Book [bookid=" + bookid + ", bookname=" + bookname + ", bookTyps=" + bookTyps + ", bookauthor=" + bookauthor+ ", bookpublisher=" + bookpublisher + ", bookprice=" + bookprice + ", borrowsum=" + borrowsum + "]";}
}

(2)BookTyps.java

package com.ppx.mybatis.domian;public class BookTyps {private int typeid;private String typename;public int getTypeid() {return typeid;}public void setTypeid(int typeid) {this.typeid = typeid;}public String getTypename() {return typename;}public void setTypename(String typename) {this.typename = typename;}@Overridepublic String toString() {return "BookTyps [typeid=" + typeid + ", typename=" + typename + "]";}
}

(3)Reader.java

package com.ppx.mybatis.domian;import java.text.SimpleDateFormat;
import java.util.Date;public class Reader {private String readerid;private String  readername;private String readerpass;private int retypeid;private String readerdate;private String readerstatus;public String getReaderid() {return readerid;}public void setReaderid(String readerid) {this.readerid = readerid;}public String getReadername() {return readername;}public void setReadername(String readername) {this.readername = readername;}public String getReaderpass() {return readerpass;}public void setReaderpass(String readerpass) {this.readerpass = readerpass;}public int getRetypeid() {return retypeid;}public void setRetypeid(int retypeid) {this.retypeid = retypeid;}public String getReaderdate() {return readerdate;}public void setReaderdate(String readerdate) {this.readerdate = readerdate;}public String getReaderstatus() {return readerstatus;}public void setReaderstatus(String readerstatus) {this.readerstatus = readerstatus;}@Overridepublic String toString() {return "Reader [readerid=" + readerid + ", readername=" + readername + ", readerpass=" + readerpass+ ", retypeid=" + retypeid + ", datetime=" + readerdate + ", readerstatus=" + readerstatus + "]";}}

2、utlis

MybatisUtils.java

package com.ppx.mybatis.utils;import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;/*** Mybatis配置文件工具类*/
public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory = null;// 初始化SqlSessionFactory对象static {try {// 1、使用MyBatis提供的Resources类加载MyBatis的配置文件String resource="mybatis-config.xml";Reader reader = Resources.getResourceAsReader(resource);// 2、根据配置文件构建SqlSessionFactory工厂sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (Exception e) {e.printStackTrace();}}// 获取SqlSession对象的静态方法public static SqlSession getSession() {return sqlSessionFactory.openSession();}	
}

3、test

MybatisTest

package com.ppx.mybatis.test;import java.util.List;import org.apache.ibatis.session.SqlSession;
import org.junit.Test;import com.ppx.mybatis.domian.Book;
import com.ppx.mybatis.domian.BookTyps;
import com.ppx.mybatis.domian.Reader;
import com.ppx.mybatis.utils.MybatisUtils;public class MybatisTest {//遍历一条测试@Testpublic void findBookTypsByTypeidText() {SqlSession sqlsession = MybatisUtils.getSession();BookTyps bookTyps=sqlsession.selectOne("com.ppx.mybatis.mapper.BookTypsMapper.findBookTypeByTypeid", 1);System.out.println(bookTyps);sqlsession.close();}//遍历所有测试@Testpublic void findBookTypsAllText() {SqlSession sqlsession = MybatisUtils.getSession();List<BookTyps> bookTypslist = sqlsession.selectList("com.ppx.mybatis.mapper.BookTypsMapper.findBookTypeAll");//一、lambda遍历//bookTypslist.forEach((bookTyps)->System.out.println(bookTyps));//二、双冒号遍历//bookTypslist.forEach(System.out::println);//三、一般遍历for (BookTyps bookTyps : bookTypslist) {System.out.println(bookTyps);}//四、迭代器遍历//五、whlie遍历//六、for循环遍历sqlsession.close();}//不安全的like测试@Testpublic void findBookTypeByTypeNameOnLikeText() {SqlSession sqlsession = MybatisUtils.getSession();List<BookTyps> bookTypslist = sqlsession.selectList("com.ppx.mybatis.mapper.BookTypsMapper.findBookTypeByTypeNameOnLike","学");for (BookTyps bookTyps : bookTypslist) {System.out.println(bookTyps);}sqlsession.close();}//安全的like测试@Testpublic void findBookTypeByTypeNameOnLike2Text() {SqlSession sqlsession = MybatisUtils.getSession();List<BookTyps> bookTypslist = sqlsession.selectList("com.ppx.mybatis.mapper.BookTypsMapper.findBookTypeByTypeNameOnLike2","学");for (BookTyps bookTyps : bookTypslist) {System.out.println(bookTyps);}sqlsession.close();}//测试嵌套查询@Testpublic void findBookByBookIdText() {SqlSession sqlsession = MybatisUtils.getSession();Book book=sqlsession.selectOne("com.ppx.mybatis.mapper.BookMapper.findBookByBookId", "013452");System.out.println(book);sqlsession.close();}//测试嵌套结果查询@Testpublic void findBookByBookId2Text() {SqlSession sqlsession = MybatisUtils.getSession();Book book=sqlsession.selectOne("com.ppx.mybatis.mapper.BookMapper.findBookByBookId2", "013452");System.out.println(book);sqlsession.close();}//测试<if>元素@Testpublic void findReaderByReaderNameAndRetypeidText() {SqlSession sqlsession = MybatisUtils.getSession();Reader reader = new Reader();reader.setReadername("清");reader.setRetypeid(2);List<Reader> rdlist = sqlsession.selectList("com.ppx.mybatis.mapper.ReaderMapper.findReaderByReaderNameAndRetypeid",reader);for (Reader rd : rdlist) {System.err.println(rd);}sqlsession.close();}//测试<choose>、<when>、<Otherwise>元素@Testpublic void findReaderByReaderNameOrretypeid2Text() {SqlSession sqlsession = MybatisUtils.getSession();Reader reader = new Reader();reader.setReadername("清");reader.setRetypeid(2);List<Reader> rdlist = sqlsession.selectList("com.ppx.mybatis.mapper.ReaderMapper.findReaderByReaderNameOrRetypeid",reader);for (Reader rd : rdlist) {System.err.println(rd);}sqlsession.close();}//测试<where>元素@Testpublic void findReaderByReaderNameAndRetypeid1Text() {SqlSession sqlsession = MybatisUtils.getSession();Reader reader = new Reader();reader.setReadername("清");reader.setRetypeid(2);List<Reader> rdlist = sqlsession.selectList("com.ppx.mybatis.mapper.ReaderMapper.findReaderByReaderNameAndRetypeid1",reader);for (Reader rd : rdlist) {System.err.println(rd);}sqlsession.close();}//测试<trim>元素@Testpublic void findReaderByReaderNameAndRetypeid2Text() {SqlSession sqlsession = MybatisUtils.getSession();Reader reader = new Reader();reader.setReadername("清");reader.setRetypeid(2);List<Reader> rdlist = sqlsession.selectList("com.ppx.mybatis.mapper.ReaderMapper.findReaderByReaderNameAndRetypeid2",reader);for (Reader rd : rdlist) {System.err.println(rd);}sqlsession.close();}
}

六、编写对应XML文件

select元素 {
id是给java的测试类调用的里面的对应的sql的语句的;
parameterType:写来接收java测试类传的类型的;
resultType:写是返回给java测试类的类型;
resultMap:是用来扩展代码的。
}

提示:resultType与resultMap不能同时使用

resultMap元素 {
id要对对应select元素中的resultMap的命名
type 写返回给java测试类的类型
}

1、BookMapper.xml

嵌套查询中
association元素 {
property="bookTyps"要写的是对象类中的连接属性。

column=“typeid” 要写的是数据库中对应的属性名。

javaType=“BookTyps” 写要映射的对象的类型;
select=“com.ppx.mybatis.mapper.BookTypsMapper.findBookTypeByTypeid” 写的是你要执行的另一条语句的路径。
}

嵌套结果查询中
需要编写较为复杂的sql语句
{
association元素中只需要 ;
property=“bookTyps” 写的是对象类中的连接属性;
javaType=“BookTyps” 写要映射的对象的类型。
}

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis//DTD Mapper 3.0//EN"".dtd">
<mapper namespace="com.ppx.mybatis.mapper.BookMapper"><!-- 嵌套查询 --><select id="findBookByBookId" parameterType="String" resultMap="BookOnBookTyps">select * from book where bookid=#{bookid}</select><resultMap type="Book" id="BookOnBookTyps"><association property="bookTyps" column="typeid" javaType="BookTyps"select="com.ppx.mybatis.mapper.BookTypsMapper.findBookTypeByTypeid"/></resultMap><!-- ==================================================== --><!-- 结果查询 --><select id="findBookByBookId2" parameterType="String" resultMap="BookOnBookTyps">select * from book b,booktyps btwhere b.typeid=bt.typeidand b.bookid=#{bookid}</select><resultMap type="Book" id="BookOnBookTyps2"><association property="bookTyps" javaType="BookTyps"/></resultMap>
</mapper>

2、BookTypsMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis//DTD Mapper 3.0//EN"".dtd">
<mapper namespace="com.ppx.mybatis.mapper.BookTypsMapper"><!-- 单表查询系列 --><!-- 根据typeid查询信息 --><select id="findBookTypeByTypeid" parameterType="Integer" resultType="BookTyps">select * from booktyps where typeid=#{typeid}</select><!-- 查询所有信息 --><select id="findBookTypeAll" parameterType="BookTyps" resultType="BookTyps">select * from booktyps </select><!-- 根据typename查询信息的模糊查询 --><!-- 第一种方法,不推荐因为不安全  --><select id="findBookTypeByTypeNameOnLike" parameterType="String" resultType="BookTyps">select * from booktyps where typename like '%${value}%'</select><!-- 第二种方法推荐因为安全  --><select id="findBookTypeByTypeNameOnLike2" parameterType="String" resultType="BookTyps">select * from booktyps where typename like concat('%',#{value},'%')</select></mapper>

3、ReaderMapper.xml

if元素{
test=“readername !=null and readername !=’’” 写里面写的是判断。
}

choose、when、otherwise元素(这个是三共存的元素类似java中的switch…case…default)
{
when元素里面的test写的是判断如下:
test=“readername !=null and readername !=’’”;
otherwise元素上面的所有条件都不为true时才执行。
}

where元素{
代替了sql语句中的where 1= 1;
where之后的内容有多余的and或者or,都会被where元素自动清除。
}

trim{
代替了sql语句中的where 1= 1;
prefix要写的是sql语句的前缀如:prefix=“where”;
prefixOverrides要写的是去除的那些特殊字符串如:prefixOverrides=“and”;
}

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis//DTD Mapper 3.0//EN"".dtd">
<mapper namespace="com.ppx.mybatis.mapper.ReaderMapper"><!-- <if>元素使用 --><select id="findReaderByReaderNameAndRetypeid" parameterType="String" resultType="Reader">select * from reader where 1=1<if test="readername !=null and readername !=''">and readername like concat('%',#{readername},'%')</if><if test="retypeid !=null and retypeid !=''">and retypeid =#{retypeid}</if></select><!-- <choose><when><otherwise>元素使用 --><select id="findReaderByReaderNameOrRetypeid" parameterType="String" resultType="Reader">select * from reader where 1=1<choose><when test="readername !=null and readername !=''">and readername like concat('%',#{readername},'%')</when><when test="retypeid !=null and retypeid !=''">and retypeid =#{retypeid}</when><otherwise>and readerdate is not null</otherwise></choose></select><!-- <where>元素使用 --><select id="findReaderByReaderNameAndRetypeid1"parameterType="com.ppx.mybatis.domian.Reader"resultType="Reader">select * from reader<where><if test="readername !=null and readername !=''">and readername like concat('%',#{readername},'%')</if><if test="retypeid !=null and retypeid !=''">and retypeid =#{retypeid}</if></where></select><!-- <trim>元素使用 --><select id="findReaderByReaderNameAndRetypeid2"parameterType="com.ppx.mybatis.domian.Reader"resultType="Reader">select * from reader<trim prefix="where" prefixOverrides="and"><if test="readername !=null and readername !=''">and readername like concat('%',#{readername},'%')</if><if test="retypeid !=null and retypeid !=''">and retypeid =#{retypeid}</if></trim></select>
</mapper>

总结

小编给你留下了foreach、bind、一对多、多对多,下次小编将就会出留下的内容。
String a =“继续学习,使我们的知识更加丰富。”;
System.out.printf("%s",a);

更多推荐

JavaEE中用eclipse学习Mybatis查询的快速上手(1)

本文发布于:2024-02-10 17:00:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1676322.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:上手   中用   快速   JavaEE   Mybatis

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!