java中的接口是类吗
207
2022-09-24
springboot整合持久层的方法实现
目录1. springboot整合jdbcTemplate1.1 pom.xml1.2 application.properties1.3 model1.4 service1.5 serviceImpl,crud案例2. jdbcTemplate配置多数据源2.1 pom.xml2.2 application.properties2.3 实体类2.4 数据源配置2.5 jdbctemplate配置2.6 注入模板测试3. springboot整合mybatis(注解方式)3.1 pom.xml3.2 application.properties3.3 实体类3.4 mapper3.5 service3.6 srviceImpl3.7 扫描mapper3.8 测试4. springboot整合mybatis(xml方式)4.1 pom.xml4.2 application.xml4.3 实体类4.4 mapper4.5 mapper.xml4.6 service4.7 serviceImpl4.8 扫描mapper5. mybatis整合多数据源5.1 pom.xml5.2 application.properties5.3 实体类5.4 mapper15.5 mapper25.6 mapper1.xml5.7 mapper2.xml5.8 数据源配置5.9 mybatis配置15.10 mybatis配置25.11 项目结构
1. springboot整合jdbcTemplate
1.1 pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
1.2 application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/demo?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
1.3 model
package com.yl.jdbctemplate.model;
import java.io.Serializable;
public class Student implements Serializable {
private Integer id;
private String stuName;
private String stuNo;
private Integer age;
private String stuMessage;
@Override
public String toString() {
return "Student{" +
"id=" + id +
", stuName='" + stuName + '\'' +
", stuNo='" + stuNo + '\'' +
", age=" + age +
", stuMessage='" + stuMessage + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getStuMessage() {
return stuMessage;
}
public void setStuMessage(String stuMessage) {
this.stuMessage = stuMessage;
}
}
1.4 service
package com.yl.jdbctemplate.service;
import com.yl.jdbctemplate.model.Student;
import java.util.List;
public interface StudentService {
int addStudent(Student student);
int addStudent2(Student student);
int updateStudent(Student student);
int deleteStudentById(Integer id);
List
List
}
1.5 serviceImpl,crud案例
package com.yl.jdbctemplate.service.impl;
import com.yl.jdbctemplate.model.Student;
import com.yl.jdbctemplate.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.stereotype.Service;
import java.sql.*;
import java.util.List;
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
JdbcTemplate jdbcTemplate;
@Override
public int addStudent(Student student) {
int result = jdbcTemplate.update("insert into student(stu_name,stu_no,age,stu_message) values(?,?,?,?) "
,student.getStuName(),student.getStuNo(),student.getAge(),student.getStuMessage());
return result;
}
//插入数据,并且回写id
@Override
public int addStudent2(Student student) {
GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
int result = jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
//插入数据后返回主键
PreparedStatement ps = con.prepareStatement("insert into student(stu_name,stu_no,age,stu_message) values(?,?,?,?)"
, Statement.RETURN_GENERATED_KEYS);
ps.setString(1,student.getStuName());
ps.setString(2,student.getStuNo());
ps.setInt(3,student.getAge());
ps.setString(4,student.getStuMessage());
return ps;
}
},keyHolder);
student.setId(keyHolder.getKey().intValue());
return result;
}
@Override
public int updateStudent(Student student) {
int result = jdbcTemplate.update("update student set stu_name=?,stu_no=?,age=?,stu_message=? where id = ?",
student.getStuName(),student.getStuNo(),student.getAge(),student.getStuMessage(),student.getId());
return result;
}
@Override
public int deleteStudentById(Integer id) {
int result = jdbcTemplate.update("delete from student where id = ?", id);
return result;
}
//这种查询比较麻烦,要一个一个设值
@Override
public List
List
@Override
public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
int id = rs.getInt("id");
String stuName = rs.getString("stu_name");
String stuNo = rs.getString("stu_no");
int age = rs.getInt("age");
String stuMessage = rs.getString("stu_message");
Student student = new Student();
student.setId(id);
student.setStuName(stuName);
student.setStuNo(stuNo);
student.setAge(age);
student.setStuMessage(stuMessage);
return student;
}
});
return list;
}
//这种方式比较方便,但是有一个前提:数据库表的字段和java实体类的属性名要完全一致
//或者数据库表的字段下划线命名方式对应java实体类属性名的驼峰命名方式
@Override
public List
List
return list;
}
}
2. jdbcTemplate配置多数据源
2.1 pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
2.2 application.properties
# springboot配置多数据源
spring.datasource.one.username=root
spring.datasource.one.password=root
spring.datasource.one.jdbcurl=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.two.username=root
spring.datasource.two.password=root
spring.datasource.two.jdbcurl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
2.3 实体类
package com.yl.jdbctemplateutil.model;
import java.io.Serializable;
public class Student implements Serializable {
private Integer id;
private String stuName;
private String stuNo;
private Integer age;
private String stuMessage;
@Override
public String toString() {
return "Student{" +
"id=" + id +
", stuName='" + stuName + '\'' +
", stuNo='" + stuNo + '\'' +
", age=" + age +
", stuMessage='" + stuMessage + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getStuMessage() {
return stuMessage;
}
public void setStuMessage(String stuMessage) {
this.stuMessage = stuMessage;
}
}
2.4 数据源配置
package com.yl.jdbctemplateutil.config;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class DatasourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.one")
DataSource dsOne() {
return new HikariDataSource();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.two")
DataSource dsTwo() {
return new HikariDataSource();
}
}
2.5 jdbctemplate配置
package com.yl.jdbctemplateutil.config;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
@Configuration
public class JdbcTemplateConfig {
@Bean
JdbcTemplate jdbcTemplateOne(@Qualifier("dsOne")DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean
JdbcTemplate jdbcTemplateTwo(@Qualifier("dsTwo")DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
2.6 注入模板测试
3. springboot整合mybatis(注解方式)
3.1 pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
3.2 application.properties
# 数据源配置
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
3.3 实体类
package com.yl.mybatis.model;
import java.io.Serializable;
public class Student implements Serializable {
private Integer id;
private String stuName;
private String stuNo;
private Integer age;
private String stuMessage;
@Override
public String toString() {
return "Student{" +
"id=" + id +
", stuName='" + stuName + '\'' +
", stuNo='" + stuNo + '\'' +
", age=" + age +
", stuMessage='" + stuMessage + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getStuMessage() {
return stuMessage;
}
public void setStuMessage(String stuMessage) {
this.stuMessage = stuMessage;
}
}
3.4 mapper
package com.yl.mybatis.mapper;
import com.yl.mybatis.model.Student;
import org.apache.ibatis.annotations.*;
import java.util.List;
public interface StudentMapper {
@Select("select * from student where id = #{id}")
Student getStudentById(Integer id);
@Insert("insert into student(stu_name,stu_no,age,stu_message) values(#{stuName},#{stuNo},#{age},#{stuMessage})")
//回写id
@SelectKey(statement = "select last_insert_id()",keyProperty = "id",before = false,resultType = Integer.class)
Integer addStudent(Student student);
//表字段和java实体属性映射
@Results({
@Result(property = "stuName",column = "stu_name"),
@Result(property = "stuNo",column = "stu_no"),
@Result(property = "stuMessage",column = "stu_message")
})
@Select("select * from student")
List
@Delete("delete from student where id = #{id}")
Integer deleteById(Integer id);
@Update("update student set stu_name = #{stuName},stu_no = #{stuNo},age = #{age},stu_message = #{stuMessage} where id = #{id}")
Integer updateByStudent(Student student);
}
3.5 service
package com.yl.mybatis.service;
import com.yl.mybatis.model.Student;
import java.util.List;
public interface StudentService {
Student getStudentById(Integer id);
Integer addStudent(Student student);
List
Integer deleteById(Integer id);
Integer updateById(Student student);
}
3.6 srviceImpl
package com.yl.mybatis.service.impl;
import com.yl.mybatis.mapper.StudentMapper;
import com.yl.mybatis.model.Student;
import com.yl.mybatis.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentMapper studentMapper;
@Override
public Student getStudentById(Integer id) {
return studentMapper.getStudentById(id);
}
@Override
public Integer addStudent(Student student) {
return studentMapper.addStudent(student);
}
@Override
public List
return studentMapper.getAllStudent();
}
@Override
public Integer deleteById(Integer id) {
return studentMapper.deleteById(id);
}
@Override
public Integer updateById(Student student) {
return studentMapper.updateByStudent(student);
}
}
3.7 扫描mapper
3.8 测试
4. springboot整合mybatis(xml方式)
4.1 pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.2 application.xml
# 数据源配置
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
# mybatis配置
# 扫描xml文件
mybatis.mapper-locations=classpath:mapper/*.xml
4.3 实体类
package com.yl.mybatis.model;
import java.io.Serializable;
public class Student implements Serializable {
private Integer id;
private String stuName;
private String stuNo;
private Integer age;
private String stuMessage;
@Override
public String toString() {
return "Student{" +
"id=" + id +
", stuName='" + stuName + '\'' +
", stuNo='" + stuNo + '\'' +
", age=" + age +
", stuMessage='" + stuMessage + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getStuMessage() {
return stuMessage;
}
public void setStuMessage(String stuMessage) {
this.stuMessage = stuMessage;
}
}
4.4 mapper
package com.yl.mybatis.mapper;
import com.yl.mybatis.model.Student;
import java.util.List;
public interface StudentMapper {
Student getStudentById(Integer id);
Integer addStudent(Student student);
List
Integer deleteById(Integer id);
Integer updateById(Student student);
}
4.5 mapper.xml
select * from student where id = #{id}
select * from student
insert into student(stu_name,stu_no,age,stu_message) values(#{stuName},#{stuNo},#{age},#{stuMessage})
delete from student where id = #{id}
update student set stu_name=#{stuName},stu_no=#{stuNo},age=#{age},stu_message=#{stuMessage} where id = #{id}
4.6 service
package com.yl.mybatis.service;
import com.yl.mybatis.model.Student;
import java.util.List;
public interface StudentService {
Student getStudentById(Integer id);
Integer addStudent(Student student);
List
Integer deleteById(Integer id);
Integer updateById(Student student);
}
4.7 serviceImpl
package com.yl.mybatis.service.impl;
import com.yl.mybatis.mapper.StudentMapper;
import com.yl.mybatis.model.Student;
import com.yl.mybatis.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentMapper studentMapper;
@Override
public Student getStudentById(Integer id) {
return studentMapper.getStudentById(id);
}
@Override
public Integer addStudent(Student student) {
return studentMapper.addStudent(student);
}
@Override
public List
return studentMapper.getAllStudent();
}
@Override
public Integer deleteById(Integer id) {
return studentMapper.deleteById(id);
}
@Override
public Integer updateById(Student student) {
return studentMapper.updateById(student);
}
}
4.8 扫描mapper
5. mybatis整合多数据源
5.1 pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
5.2 application.properties
# 数据源配置
spring.datasource.one.username=root
spring.datasource.one.password=root
spring.datasource.one.jdbcurl=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.two.username=root
spring.datasource.two.password=root
spring.datasource.two.jdbcurl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
5.3 实体类
package com.yl.mybatisutil.model;
import java.io.Serializable;
public class Student implements Serializable {
private Integer id;
private String stuName;
private String stuNo;
private Integer age;
private String stuMessage;
@Override
public String toString() {
return "Student{" +
"id=" + id +
", stuName='" + stuName + '\'' +
", stuNo='" + stuNo + '\'' +
", age=" + age +
", stuMessage='" + stuMessage + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getStuMessage() {
return stuMessage;
}
public void setStuMessage(String stuMessage) {
this.stuMessage = stuMessage;
}
}
5.4 mapper1
package com.yl.mybatisutil.mapper1;
import com.yl.mybatisutil.model.Student;
import java.util.List;
public interface StudentMapper1 {
List
}
5.5 mapper2
package com.yl.mybatisutil.mapper2;
import com.yl.mybatisutil.model.Student;
import java.util.List;
public interface StudentMapper2 {
List
}
5.6 mapper1.xml
select * from student
5.7 mapper2.xml
select * from student
5.8 数据源配置
package com.yl.mybatisutil.config;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
/**
* 多数据源配置
*/
@Configuration
public class DataSourceConfig {
@Bean
http:// @ConfigurationProperties(prefix = "spring.datasource.one")
DataSource dsOne() {
return new HikariDataSource();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.two")
DataSource dsTwo() {
return new HikariDataSource();
}
}
5.9 mybatis配置1
package com.yl.mybatisutil.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotatiohttp://n.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
/**
* mybatis的配置
*/
@Configuration
@MapperScan(basePackages = "com.yl.mybatisutil.mapper1",sqlSessionFactoryRef = "sqlSessionFactory1",sqlSessionTemplateRef = "sqlSessionTemplate1")
public class MyBatisConfigOne {
@Qualifier("dsOne")
@Autowired
DataSource dataSource;
@Bean
SqlSessionFactory sqlSessionFactory1() {
try {
SqlSessionFactory sqlSessionFactory = null;
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactory = sqlSessionFactoryBean.getObject();
return sqlSessionFactory;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Bean
SqlSessionTemplate sqlSessionTemplate1() {
return new SqlSessionTemplate(sqlSessionFactory1());
}
}
5.10 mybatis配置2
package com.yl.mybatisutil.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
/**
* mybatis的配置
*/
@Configuration
@MapperScan(basePackages = "com.yl.mybatisutil.mapper2",sqlSessionFactoryRef = "sqlSessionFactory2",sqlSessionTemplateRef = "sqlSessionTemplate2")
public class MyBatisConfigTwo {
@Qualifier("dsTwo")
@Autowired
DataSource dataSource;
@Bean
SqlSessionFactory sqlSessionFactory2() {
try {
SqlSessionFactory sqlSessionFactory = null;
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactory = sqlSessionFactoryBean.getObject();
return sqlSessionFactory;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Bean
SqlSessionTemplate sqlSessionTemplate2() {
return new SqlSessionTemplate(sqlSessionFactory2());
}
}
5.11 项目结构
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~