在IDEA用SpringBoot模板引擎创建SpringBoot项目,勾选Web、MySQL、JPA、MyBatis。
在resource下新建application.yml文件,这里使用ymal来配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/jpa?serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
#使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
mybatis:
#指定实体所在的位置
type-aliases-package: cn.edu.hsxy.entity
#指定映射文件的位置,如果全部使用注解,没有映射文件可以不写
mapper-locations: classpath:mapper/*.xml
新建实体了User
package cn.edu.hsxy.entity;
public class User {
private int id;
private String name;
private String password;
/*
set/get方法
*/
}
实体类创建好了开始写dao。
package cn.edu.hsxy.dao;
import ...
@Mapper
public interface UserDao {
int insert(User user);
User selectByPrimaryKey(Integer id);
int update(User user);
@Delete("DELETE FROM user WHERE id=#{id}")
int delete(Integer id);
}
- 需要在dao的所以接口上写上@Mapper注解。如果不写,可以在主函数上写@MapperScan("cn.edu.hsxy.dao"),指向dao接口所在的包,扫描该包下的所有接口。
在resource下创建mapper包,放所有的映射文件,与之前application.yml文件的位置要一致。这里创建UserMapper.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="cn.edu.hsxy.dao.UserDao">
<insert id="insert">
INSERT INTO
user
(name ,password)
VALUES
(#{name},#{password})
</insert>
<select id="selectByPrimaryKey" resultType="cn.edu.hsxy.entity.User">
SELECT *
FROM user
WHERE id=#{id}
</select>
<update id="update">
UPDATE
user
SET
name = #{name},
password = #{password}
WHERE
id=#{id}
</update>
</mapper>
- namespace的值就是到接口的全限定名,根据这个名找到接口所在的位置。
- id就是接口中的方法名。
- 如果在接口中的方法中写好了@Select、@Delete等注解,则不需要再配置文件中写映射了。
dao层写好开始写Service层,在service下创建UserService接口
package cn.edu.hsxy.service;
import cn.edu.hsxy.entity.User;
public interface UserService {
public User getUserById(int id);
boolean addUser(User user);
boolean updateUser(User user);
Integer deleteUser(Integer id);
}
写一个UserServiceImpl实现上接口,去写业务逻辑
package cn.edu.hsxy.service.impl;
import ...;
@Service("userService")
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
@Override
public User getUserById(int id) {
return userDao.selectByPrimaryKey(id);
}
@Override
public boolean addUser(User user) {
boolean result = false;
try{
userDao.insert(user);
}catch (Exception e){
e.printStackTrace();
}
return result;
}
@Override
public boolean updateUser(User user) {
Integer result = -1;
try{
result = userDao.update(user);
}catch (Exception e){
e.printStackTrace();
}
if(result == 1){
return true;
}
return false;
}
@Override
public Integer deleteUser(Integer id) {
return userDao.delete(id);
}
}
Service层写好了开始写Controller层。
package cn.edu.hsxy.controller;
import ...;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/getUser")
@ResponseBody
public User getUser(){
User user = new User();
user.setId(1);
user.setName("ssk");
user.setPassword("123456");
return user;
}
@ResponseBody
@RequestMapping("/showUser")
public User toIndex(int id){
return userService.getUserById(id);
}
@RequestMapping("/updateUser")
@ResponseBody
public User updateUser(User user){
boolean flag = userService.updateUser(user);
if(flag == true){
return user;
}
return null;
}
@ResponseBody
@RequestMapping("/deleteUser")
public Integer deleteUserById(Integer id){
return userService.deleteUser(id);
}
}
接下来就是主函数了,因为SpringBoot使用内嵌Tomcat,使用主函数就可以运行了。
package cn.edu.hsxy;
import ... ;
@SpringBootApplication
//@MapperScan("cn.edu.hsxy.dao")
public class SpringbootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisApplication.class, args);
}
}
- 因为在接口中已经写@Mapper注解了,所以@MapperScan可以不写,建议使用@MapperScan注解。
源码及数据库文件分享 提取码:ijrz