1. springboot整合jdbcTemplate
1.1 pom.xml
4.0.0 org.springframework.boot spring-boot-starter-parent 2.5.5 com.yl jdbctemplate 0.0.1-SNAPSHOT jdbctemplate Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-web mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
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); ListgetAllStudent(); List getAllStudent2(); }
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 ListgetAllStudent() { List list = jdbcTemplate.query("select * from student", new RowMapper () { @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 getAllStudent2() { List list = jdbcTemplate.query("select * from student",new BeanPropertyRowMapper<>(Student.class)); return list; } }
2. jdbcTemplate配置多数据源
2.1 pom.xml
4.0.0 org.springframework.boot spring-boot-starter-parent 2.5.5 com.yl jdbctemplateutil 0.0.1-SNAPSHOT jdbctemplateutil Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-web mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
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
4.0.0 org.springframework.boot spring-boot-starter-parent 2.5.5 com.yl mybatis 0.0.1-SNAPSHOT mybatis Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.0 mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
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") ListgetAllStudent(); @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); ListgetAllStudent(); 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 ListgetAllStudent() { 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
4.0.0 org.springframework.boot spring-boot-starter-parent 2.5.5 com.yl mybatis 0.0.1-SNAPSHOT mybatis Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.0 mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
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); ListgetAllStudent(); Integer deleteById(Integer id); Integer updateById(Student student); }
4.5 mapper.xml
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); ListgetAllStudent(); 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 ListgetAllStudent() { 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
4.0.0 org.springframework.boot spring-boot-starter-parent 2.5.5 com.yl mybatisutil 0.0.1-SNAPSHOT mybatisutil Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.0 mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test src/main/java **/*.xml src/main/resources org.springframework.boot spring-boot-maven-plugin
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 { ListgetAllStudent(); }
5.5 mapper2
package com.yl.mybatisutil.mapper2; import com.yl.mybatisutil.model.Student; import java.util.List; public interface StudentMapper2 { ListgetAllStudent(); }
5.6 mapper1.xml
5.7 mapper2.xml
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 @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.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.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 项目结构
到此这篇关于springboot整合持久层的方法实现的文章就介绍到这了,更多相关springboot整合持久层内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!