spring boot 好处是配置极少,可以达到快速开发的目的。
mybatis:小巧、方便、高效、简单、直接、半自动
一、搭建项目过程
1.File-->new Project-->Spring Initializr(Project SDK(java 1.8))-->Project Metadata(group--包名、Artifact--项目名)
-->dependencies(勾选web(web)、SQL(MySQL,JDBC,Mybatis))-->project location(项目位置)-->finish
2.自动生成pom.xml文件(包括项目名/包名/版本号/依赖等)。
因为上述过程勾选了web、MySQL、JDBC、Mybatis,所以在pom.xml文件会自动生成依赖
3.自动生成了程序入口代码DemoApplication.java
4.java文件夹主要存放.java文件(model,dao,service,controller)
resources文件夹主要存放配置文件(.html,.jsp,.js文件放在static文件夹里面)
5.application.properties中的配置
#设置项目端口
server.port=8081
#连接数据库相关配置
spring.datasource.url=jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=xn1004
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#扫描到类/mapper.xml
mybatis.typeAliasesPackage=com.example.demo01.model
mybatis.mapper-locations=classpath*:mapper/**/*.xml
至此,所有准备工作已经完成。
具体逻辑比较简单,需要注意的是,
dao层@Mapper,
service层@Service、@Autowired,
controller层@RestController或@Controller,这些注解不可遗漏。。
关于mapper.xml
在mybatis中,映射文件中的namespace是用于绑定Dao接口的,即面向接口编程。
当namespace绑定接口后,可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句,如下:
二、遇到的问题
在添加完用户后,想要重新查所有用户,
直接调用searchUser()方法是不可行的,
用@Controller注解直接return "index"报错(是视图……SSL)。。
用ModelAndView重定向到页面后就可以。
ModelAndView如其名称所示,它代表了Spring Web MVC中呈现画面时所使用的Model与View,由于Java一次只能返回一个物
件,所以ModelAndView的作用封装这两个物件,以方便一次返回Model与View这两个物件。
RestController 和Controller 的应用。
RestController | Controller |
return 内容 | 页面 |
json/xml |
使用RestController注解,其中方法无法返回jsp/html页面,返回的是return的内容。
(eg: return "index" 想要到index.html页面-->显示的是index)
如需返回json,xml或自定义mediaType内容到页面,需要在对应方法上加@ResponseBody
如果需要返回指定页面,则需要用@Controller
用ModelAndView重定向到页面
ModelAndView mv = new ModelAndView("redirect:/index.html");
redirect | forword |
客户端行为,url改变 | 服务端行为,url不改变 |
不能共享数据 | 共享数据(传值) |
效率低 | 效率高 |
间接转发(重定向) | 直接转发(请求转发) |
三、Mybatis相关问题
mapper.xml
因为数据库设置id主键,自增,在insert时,可以不加id,如下:
insert into user_tab(name,age) values(#{name},#{age})
不指定字段时,有时需要用到该主键,要有useGeneratedkeys="true",keyProperty="对应主键对象“,这两个属性
insert into user_tab values(#{id},#{name},#{age})
四、Navicat的使用
五、jquery ajax
url、type、dateType都是String类型的参数
url:发送请求的地址
type:规定请求的类型(get,post)get是从服务器上获取数据,post是向服务器传送数据。默认是get,
put和delete也可以使用,但仅部分浏览器支持
dataType:服务器响应的数据类型(XML,html,script,json,jsonp,text)
如果不指定,JQuery将自动根据http包信息返回responseXML或responseText,并作为回调函数参数传递
async:true为异步,false为同步
success:请求成功时返回的函数。
jquery遍历,$.each()函数,遍历处理data,可以是数组、DOM、json等,取决于直接给定或者ajax返回的类型
它是一个全局函数,不操作JQuery对象,而是以一个数组或者对象作为第1个参数,以一个回调函数作为第2个参数。回调函数拥
有两个参数:第1个为对象的成员或数组的索引,第2个为对应变量或内容。
function (index, item)中index是当前元素的位置,item是值
success后,触发删除超链接,绑定id进行删除,动态获取当前行id,拼接的问题,尽量单一,提升代码的可扩展性。
$('').text('删除').attr('href', 'deleteUser?id=' + item.id);
六、idea快捷键的使用
刚开始使用idea,创建类或者添加注解时,以红色字体显示,表示没有导包
import org.springframework.beans.factory.annotation.Autowired;
常用快捷键