“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 "删除失败";
}