Maven简介:在总结之前有必要浅谈一下Maven
在我们使用JavaWeb的过程中,肯定有关于java 的jar包的苦恼,而且随着项目工程的不断增大,需要添加的依赖和jar包也不断的增多,每一个新的Jar包都需要去Maven镜像仓库去寻找Jar包,极其繁琐的过程不仅使程序员很苦恼,也使得工程的占用资源越来越大,而且在版本迭代中还会存在一定的冲突,为了解决这些问题,Maven技术就出现了。
简单来说Maven是用来对项目中一些jar的管理。 通过pom.xml文件来管理这些jar包。通过坐标的形式来管理。
下载好Maven后,重要是配置环境变量,跟idea的JAva_Home一样需要配置Maven_Home的环境变量,以便可以在任意路径下打开找到,然后再Dos窗口中输入mvn -version验证是否配置成功,基本的环境配置好后,接下来就需要在IDEA中关联Maven,如下图所示
还有一个重要的这个设置只是设置了当前项目maven与IDEA的关联,下次打开IDEA后还需要重新关联,有一个初始化设置如下图,做法跟上图一样
接下来创建好Maven的普通工程后需要在pom.xml中引入相应的jar坐标(jar包),具体jar包可以去MAven镜像仓库中去选择加入,注意的是这个仓库是国外的网址下载引入的速度比较慢,可以选择阿里的阿里云镜像,感兴趣的可以去百度一波配置一下。
注意的是创建的Mavenu普通工程的版本是1.0的,许多jar包不兼容,在这里推荐把web.xml文件给替换了
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀==持久层框架==。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录. 半自动化框架。
首先下载jar包,然后再mybatis.xml的config配置核心文件,下面的是maven 和mybatis的一些常用映射文件
4.0.0
org.example
mybatis07
1.0-SNAPSHOT
mysql
mysql-connector-java
8.0.27
org.mybatis
mybatis
3.5.7
org.projectlombok
lombok
1.18.22
junit
junit
4.12
test
log4j
log4j
1.2.17
com.github.pagehelper
pagehelper
5.1.11
需要注意的是要配置日志文件和db的属性集(db.properties)
log4j的引用能让代码再控制台上更加的清晰
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
单个Mapper.xml配置 一个Mapper.xml对应一个dao ,对应的操作一张表。
/*标签内部直接写sql语句*/
insert into people values (0,'张四',18);
insert into book_info(book_name,book_author,book_price,book_pub)values
(#{book_name},#{book_author},#{book_price},#{book_pub})
update book_info set book_name=#{book_name},book_author=#{book_author},book_price=#{book_price},
book_pub=#{book_pub}
where book_id=#{book_id}
delete from book_info where book_id=#{book_id}
就是将jdk内部的一些类型,做一个简单的别名。
自定义别名
使用< typeAliases >< /typeAliases>内部的< typeAlias >
alias 别名 type实体类的全限定名
使用< typeAliases >< /typeAliases>内部的< package name="domain.blog"/>
name属性就是实体类所在的全限定包名
①获取主键
insert into people values (#{id},#{name},#{age});
②.#和$这两个符号的区别
#{} 实现的是sql语句的预处理参数、之后执行sql中用?号代替、使用时不需要关注数据类型、mybatis自动实现数据类型的转换、并且可以防止sql注入。
其实使用的statement对象是 PreparedStatement一定 已处理对象。
${} 实现是sql语句的直接拼接、不做数据类型转换。需要自行判断数据类型、不能防止sql注入。
其实使用的statement对象,直接拼接,不能放置sql注入
③解决数据库列名和实体类列名不一致
第一种是再数据查询语言中起别名让此别名和数据库中的列名一致(不建议使用)
第二种再mapper里使用ResultMap在里面起别名就能完美解决
resultMap id="map" type="com.lyd.entry.Book">
在实际开发中肯定不是单单从一张表中获取数据而是更多的采用多表联查进行查询,这时候就需要判断表间关系是多对一,多对多,或一对多,其中多对一是最常用的一种表间关系.
动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。
使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。
如果你之前用过 JSTL 或任何基于类 XML 语言的文本处理器,你对动态 SQL 元素可能会感觉似曾相识。在 MyBatis 之前的版本中,需要花时间了解大量的元素。借助功能强大的基于 OGNL 的表达式,MyBatis 3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。
if where
choose (when, otherwise)
set
foreach
where标签可以帮助添加where关键字,并且把第一个and或者or给取出
choose when otherwise 和where
when表示当条件满足时直接跳出下面的分支when和where(有点类似break) ,如果都不满足则执行otherwise
set标签 可以修改字段,并且可以自动添加set关键字,且去除最后的语句的逗号
update book_info
book_name=#{name},
book_author=#{author},
book_price=#{price},
book_pub=#{pub},
where book_id=#{id}batchDelete
foreach : 批量操作:了解一下 批量删除,新增!
批量操作一般都由两种方式解决:
第一种:java代码中循环调用sql语句
第二种:使用mybatis动态sql的foreach
模糊查询 like 和concat拼接字符串函数