“Mybatis的使用”的版本间的差异
(创建页面,内容为“==使用MyBatis== MyBatis,是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代…”) |
(→基本使用方法) |
||
第12行: | 第12行: | ||
*创建Mapper接口 | *创建Mapper接口 | ||
<blockquote> | <blockquote> | ||
public interface CustomerMapper {<br /> | |||
@Select("select id,name,address from customer")<br /> | |||
public List<Customer> getCustomers();<br /> | |||
@Delete("delete from customer where id =#{id}")<br /> | |||
public Integer updateCustomer(Customer customer);<br /> | |||
@Update("update customer set name = #{name},address=#{address} where id =#{id}")<br /> | @Update("update customer set name = #{name},address=#{address} where id =#{id}")<br /> | ||
public Integer updateCustomer(Customer customer);<br /> | public Integer updateCustomer(Customer customer);<br /> | ||
@Insert("insert into customer(id,name,address) values(#{id},#{name},#{address})")<br /> | |||
public Integer saveCustomer(Customer customer);<br /> | |||
} | |||
</blockquote> | </blockquote> | ||
这里是通过全注解的方式来写SQL,不写XML文件,当然也可以使用xml文件配置sql信息(可以使用IDE的插件完成,但要注意配置xml放置的位置),@Select、@Insert、@Update以及@Delete四个注解分别对应XML中的select、insert、update以及delete标签,@Results注解类似于XML中的ResultMap映射文件,另外使用@SelectKey注解可以实现主键回填的功能,即当数据插入成功后,插入成功的数据id会赋值到对象的id属性上 | 这里是通过全注解的方式来写SQL,不写XML文件,当然也可以使用xml文件配置sql信息(可以使用IDE的插件完成,但要注意配置xml放置的位置),@Select、@Insert、@Update以及@Delete四个注解分别对应XML中的select、insert、update以及delete标签,@Results注解类似于XML中的ResultMap映射文件,另外使用@SelectKey注解可以实现主键回填的功能,即当数据插入成功后,插入成功的数据id会赋值到对象的id属性上 | ||
第20行: | 第28行: | ||
在启动类上添加Mapper扫描@MapperScan(basePackages = "com.kayak.springboot.mybatis.mapper"),通常我们会把Mapper都放到一起 | 在启动类上添加Mapper扫描@MapperScan(basePackages = "com.kayak.springboot.mybatis.mapper"),通常我们会把Mapper都放到一起 | ||
*使用 | *使用 | ||
<blockquote> | |||
@RestController @RequestMapping("/customer") <br/> | |||
public class CustomerController { <br/> | |||
Logger logger = LoggerFactory.getLogger(CustomerController.class);<br/> | |||
/** | |||
* 客户信息Mapper | |||
*/ | |||
@Autowired<br/> | |||
CustomerMapper customerMapper;<br/> | |||
/**<br/> | |||
* 查询所有的客户信息<br/> | |||
* <br/> | |||
* @return<br/> | |||
*/<br/> | |||
@RequestMapping(value = { "/", "" })<br/> | |||
public List<Customer> allCuetomers() {<br/> | |||
return customerMapper.getCustomers();<br/> | |||
}<br/> | |||
/**<br/> | |||
* 根据id查询客户信息<br/> | |||
* <br/> | |||
* @param id<br/> | |||
* @return<br/> | |||
*/<br/> | |||
@GetMapping("/{id}")<br/> | |||
public Customer getCustomer(@PathVariable Long id) {<br/> | |||
return customerMapper.getCustomerById(id);<br/> | |||
}<br/> | |||
/**<br/> | |||
* 保存客户信息<br/> | |||
* <br/> | |||
* @param customer<br/> | |||
* @return<br/> | |||
*/<br/> | |||
@PostMapping("/")<br/> | |||
public Customer saveCustomer(@RequestBody Customer customer) {<br/> | |||
int result = customerMapper.saveCustomer(customer);<br/> | |||
return result == 1 ? customer : null;<br/> | |||
}<br/> | |||
/**<br/> | |||
* 修改客户信息<br/> | |||
* <br/> | |||
* @param id<br/> | |||
* @param name<br/> | |||
* @param address<br/> | |||
* @return<br/> | |||
*/<br/> | |||
@PutMapping("/{id}/{name}/{address}")<br/> | |||
public Customer putCustomer(@PathVariable Long id, @PathVariable String name, @PathVariable String address) {<br/> | |||
Customer customer = new Customer();<br/> | |||
customer.setAddress(address);<br/> | |||
customer.setName(name);<br/> | |||
customer.setId(id);<br/> | |||
int result = customerMapper.updateCustomer(customer);<br/> | |||
if (result > 0) {<br/> | |||
return customer;<br/> | |||
}<br/> | |||
return null;<br/> | |||
}<br/> | |||
/**<br/> | |||
* 删除客户信息<br/> | |||
* <br/> | |||
* @param id<br/> | |||
* @return<br/> | |||
*/<br/> | |||
@DeleteMapping(value = "/{id}")<br/> | |||
public String deleteCustomer(@PathVariable Long id) {<br/> | |||
int result = customerMapper.deleteCustomer(id);<br/> | |||
if (result > 0) {<br/> | |||
return "删除成功";<br/> | |||
}<br/> | |||
return "删除失败";<br/> | |||
} | |||
</blockquote> |
2021年8月27日 (五) 06:05的最新版本
使用MyBatis
MyBatis,是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。其使用方式和jdbcTemplate基本是一致的
基本使用方法
- 添加依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
- 创建Mapper接口
public interface CustomerMapper {
@Select("select id,name,address from customer")
public List<Customer> getCustomers();
@Delete("delete from customer where id =#{id}")
public Integer updateCustomer(Customer customer);
@Update("update customer set name = #{name},address=#{address} where id =#{id}")
public Integer updateCustomer(Customer customer);
@Insert("insert into customer(id,name,address) values(#{id},#{name},#{address})")
public Integer saveCustomer(Customer customer);
}
这里是通过全注解的方式来写SQL,不写XML文件,当然也可以使用xml文件配置sql信息(可以使用IDE的插件完成,但要注意配置xml放置的位置),@Select、@Insert、@Update以及@Delete四个注解分别对应XML中的select、insert、update以及delete标签,@Results注解类似于XML中的ResultMap映射文件,另外使用@SelectKey注解可以实现主键回填的功能,即当数据插入成功后,插入成功的数据id会赋值到对象的id属性上
- 配置mapper扫描
直接在Mapper上面添加@Mapper注解 在启动类上添加Mapper扫描@MapperScan(basePackages = "com.kayak.springboot.mybatis.mapper"),通常我们会把Mapper都放到一起
- 使用
@RestController @RequestMapping("/customer")
public class CustomerController {
Logger logger = LoggerFactory.getLogger(CustomerController.class);
/** * 客户信息Mapper */ @Autowired
CustomerMapper customerMapper;
/**
* 查询所有的客户信息
*
* @return
*/
@RequestMapping(value = { "/", "" })
public List<Customer> allCuetomers() {
return customerMapper.getCustomers();
}
/**
* 根据id查询客户信息
*
* @param id
* @return
*/
@GetMapping("/{id}")
public Customer getCustomer(@PathVariable Long id) {
return customerMapper.getCustomerById(id);
}
/**
* 保存客户信息
*
* @param customer
* @return
*/
@PostMapping("/")
public Customer saveCustomer(@RequestBody Customer customer) {
int result = customerMapper.saveCustomer(customer);
return result == 1 ? customer : null;
}
/**
* 修改客户信息
*
* @param id
* @param name
* @param address
* @return
*/
@PutMapping("/{id}/{name}/{address}")
public Customer putCustomer(@PathVariable Long id, @PathVariable String name, @PathVariable String address) {
Customer customer = new Customer();
customer.setAddress(address);
customer.setName(name);
customer.setId(id);
int result = customerMapper.updateCustomer(customer);
if (result > 0) {
return customer;
}
return null;
}
/**
* 删除客户信息
*
* @param id
* @return
*/
@DeleteMapping(value = "/{id}")
public String deleteCustomer(@PathVariable Long id) {
int result = customerMapper.deleteCustomer(id);
if (result > 0) {
return "删除成功";
}
return "删除失败";
}