我的整理mybatis使用
1,引入starter-web,mysql-connector-java,mybatis-spring-boot-starter(1.3.1-2.1.2)
2,数据库表准备好,配置好4个常用配置。
spring.datasource.url=jdbc:mysql://localhost:3306/test
username,password 和 driver-class-name=com.mysql.jdbc.Driver
3,pojo准备好,并制定get,set
@Alias(value = "user")//指定别名
public class User {}
4,接口dao指定好。
@Mapper //@Repository 一样
public interface MyBatisUserDao {
public User getUser(Long id);
}
5,classpath下准备好mapper
<?xml ?>
<!DOCTYPE mapper>
<mapper namespace="com.*.MyBatisUserDao">//路径写对
<select id="getUser" parameterType="long" resultType="user">//返回user,与@Alias对应
select id, user_name as userName, sex, note from t_user where id = #{id} //userName和pojo中一样
</select>
</mapper>
6,基本配置
#mapper位置
mybatis.mapper-locations=classpath:*.xml
#jopo位置
mybatis.type-aliases-package=com.*.pojo
7,boot主类,加扫描接口
@MapperScan(
//指定扫描包
basePackages = "com.XX.*",
annotationClass = Mapper.class //与接口dao上注解一致
)
8,controller测试
为了怕翻车,比如可以建testj这样的项目:
mysql和jsp pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
==========================mysql=================================
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
===========================================================
============================JSP===============================
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<scope>provided</scope>
</dependency>
===========================================================
创建jsp文件 和数据库
CREATE TABLE `t_user` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`user_name` varchar(60) NOT NULL,
`note` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
src/main/webapp/WEB-INF/jsp/user/details.jsp
<%@ page pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>用户详情</title>
</head>
<body>
<center>
<table border="1">
<tr>
<td>标签</td>
<td>值</td>
</tr>
<tr>
<td>用户编号</td>
<td><c:out value="${user.id}"></c:out></td>
</tr>
<tr>
<td>用户名称</td>
<td><c:out value="${user.userName}"></c:out></td>
</tr>
<tr>
<td>用户备注</td>
<td><c:out value="${user.note}"></c:out></td>
</tr>
</table>
</center>
</body>
</html>
jsp配置 ,选择项目结构 ctrl+alt+shift+s
- 在facets——web——web Resource Directory 选择到 webapp目录。deployment Root 为 默认 /
- 在右下角会提示创建 artifacts 点击确定。一切都默认。(会创建 项目名:Web exploded)
application.properties
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
#数据库配置。这样配置为了适应最新的数据库
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
#可以不配置数据库驱动,Spring Boot会自己发现
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
#mybatis配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.my.testj
controller
- user/details 将会拼接 :/WEB-INF/jsp/user/details.jsp
- 我们指定的 实在webapp目录,将会在这个目录去找。webapp是和 java 和resource 目录同级
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserDao userDao = null;
// 展示用户详情
@RequestMapping("details")
public ModelAndView details(Long id) {
// 访问模型层得到数据
User user = userDao.getUser(id);
/*User user=new User();*/
/*user.setId(111L);
user.setUserName("张三");*/
// 模型和视图
ModelAndView mv = new ModelAndView();
// 定义模型视图
mv.setViewName("user/details");
// 加入数据模型
mv.addObject("user", user);
// 返回模型和视图
return mv;
}
@RequestMapping("/detailsForJson")
public ModelAndView detailsForJson(Long id) {
// 访问模型层得到数据
//User user = userService.getUser(id);
User user=new User();
user.setId(111L);
user.setUserName("张三");
// 模型和视图
ModelAndView mv = new ModelAndView();
// 生成JSON视图
MappingJackson2JsonView jsonView = new MappingJackson2JsonView();
mv.setView(jsonView);
// 加入模型
mv.addObject("user", user);
return mv;
}
}
- 此时jsp已经搭建完毕。
搭建mybatis
#mybatis配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.my.testj
mapper.xml
src/main/resources/mapper/userMapper.xml #注意这里放的 resources目录下
<?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.hua.testj.UserDao"> #注意这里指定的dao路径
<select id="getUser" resultType="user">
select id, user_name as userName, note from t_user where id = #{id}
</select>
<select id="findUsers" resultType="user">
select id, user_name as userName, note from t_user
<where>
<if test="userName != null"> and user_name like concat('%', #{userName}, '%')</if>
<if test="note != null"> and note like concat('%', #{note}, '%')</if>
</where>
</select>
</mapper>
dao
@Mapper
public interface UserDao {
User getUser(Long id);
List<User> findUsers(@Param("userName") String userName, @Param("note") String note);
}
- mybatis.type-aliases-package=com.my.testj 注意,这个目录 和下对应
pojo
@Alias("user")
public class User {
private Long id;
private String userName;
private String note;
}
mian
@SpringBootApplication
public class TestjApplication {
public static void main(String[] args) {
SpringApplication.run(TestjApplication.class, args);
}
}
/*@SpringBootApplication(scanBasePackages = "com.springboot.chapter9")
@MapperScan(basePackages="com.springboot.chapter9", annotationClass = Mapper.class)*/
- 注意,默认的扫描是 mapper 可以不用配置。
如果配置:Repository
@Repository
public interface UserDao {}
记得改:annotationClass = Repository.class