JdbcTemplates MySQLでのJavaテクノロジー--SpringBoot訪問(05)

1.初期化のmysql:データベース作成、データシート、データベースの準備は、
プロジェクトの作成2.

(1)引入数据库操作相关依赖:
          <!--引入spring-boot-starter-jdbc的依赖-->
          <dependency>
	   		  <groupId>org.springframework.boot</groupId>
			  <artifactId>spring-boot-starter-jdbc</artifactId>
		  </dependency>
          <!--引入MySQL Driver驱动包-->		
          <dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<!-- 阿里系的Druid连接池依赖包 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.29</version>
		</dependency>
(2)配置相关文件
   <1>在application.properties文件配置mysql相关信息
      1.驱动配置信息
        # mysql的驱动类
        spring.datasource.driver-class-name=com.mysql.jdbc.Driver
        # 数据库地址
        spring.datasource.url=jdbc:mysql://localhost:3306/test
        # 数据库账号
        spring.datasource.username=root
        #数据库密码
        spring.datasource.password=123456
      2.连接池的配置信息
       # 初始化大小,最小,最大
       spring.datasource.initialSize=5
       spring.datasource.minIdle=5
       spring.datasource.maxActive=20
       # 配置获取连接等待超时的时间
       spring.datasource.maxWait=60000
       # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
       spring.datasource.timeBetweenEvictionRunsMillis=60000
       # 配置一个连接在池中最小生存的时间,单位是毫秒
       spring.datasource.minEvictableIdleTimeMillis=300000
       spring.datasource.validationQuery=SELECT 1 FROM DUAL
       spring.datasource.testWhileIdle=true
       spring.datasource.testOnBorrow=false
       spring.datasource.testOnReturn=false
       # 打开PSCache,并且指定每个连接上PSCache的大小
       spring.datasource.poolPreparedStatements=true
       spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
       # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
       spring.datasource.filters=stat,wall,log4j
       # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
       spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
   <2>通过引入这些依赖和配置一些基本信息,springboot就可以访问数据库类   	

3.特定のコーディング

1)实体类:
    public class Student {
       private int id ;
       private String name ;
      ....省略了getter. setter}2)dao层
    <1>dao层接口:
      public interface StudentDAO {
         int add(Student student );
         int update(Student student );
         int delete(int id);
         Student findStudentById(int id);
         List<Student > findStudentList();}
    <2>dao层接口的实现类:
         @Repository
         public class AccountDaoImpl implements IAccountDAO {
         @Autowired
         private JdbcTemplate jdbcTemplate;
         @Override
         public int add(Student student ) {
             return jdbcTemplate.update("insert into account(name) values(?)",
              account.getName(),account.getMoney());}
         @Override
         public int update(Student student) {
             return jdbcTemplate.update("UPDATE student SET NAME=? WHERE id=?",
                student.getName(),student.getId());}
         @Override
         public int delete(int id) {
             return jdbcTemplate.update("DELETE from TABLE student where id=?",id);}
         @Override
         public Student findStudentById(int id) {
            List<Student > list = jdbcTemplate.query("select * from student where id = ?", new Object[]{id}, new BeanPropertyRowMapper(Student.class));
            if(list!=null && list.size()>0){
                Student student = list.get(0);
                return student;}else{return null;}}
         @Override
         public List<Student> findStudentList() {
        List<Student> list = jdbcTemplate.query("select * from student", new Object[]{}, new   BeanPropertyRowMapper(Student.class));
        if(list!=null && list.size()>0){return list;}else{return null;}}}3)service层
    <1>service层接口:
    public interface StudentService {
       int add(Student student );
       int update(Student student);
       int delete(int id);
       Student findStudentById(int id);
       List<Student > findStudentList();}
    <2>service层接口的实现类:
    @Service
    public class StudentServiceImpl implements StudentService {
       @Autowired
       StudentDAO studentDAO ;
       @Override
       public int add(Student student) {
          return studentDAO.add(student);}
       @Override
       public int update(Student student) {
          return studentDAO.update(student);}
       @Override
       public int delete(int id) {
          return studentDAO.delete(id);}
       @Override
       public Student findStudentById(int id) {
          return studentDAO.findStudentById(id);}
       @Override
       public List<Student> findStudentList() {
          return studentDAO.findStudentList();}}4)controller层:构建一组restful api来展示
       @RestController
       @RequestMapping("/student")
       public class StudentController {
           @Autowired
           StudentService studentService;
       @RequestMapping(value = "/list",method = RequestMethod.GET)
       public  List<Student> getStudents(){
       return studentService.findStudentList();}
       @RequestMapping(value = "/{id}",method = RequestMethod.GET)
       public  Account getStudentById(@PathVariable("id") int id){
          return studentService.findStudentById(id);}

       @RequestMapping(value = "/{id}",method = RequestMethod.PUT)
       public  String updateStudent(@PathVariable("id")int id , 
            @RequestParam(value = "name",required = true)String name){
        Student student=new Student();
            student.setId(id);
            student.setName(name);
        int t=studentService.update(student);
        if(t==1){return student.toString();}else {return "fail";}}
        
      @RequestMapping(value = "",method = RequestMethod.POST)
      public String postStudent( @PathVariable("id")int id ,
                                 @RequestParam(value = "name")String name){
        Student student=new Student();
        student.setMoney(money);
        student.setName(name);
        int t= accountService.add(account);
        if(t==1){return student.toString();}else {return "fail";}}}

4.建物の郵便配達、注意安らかなAPIのスタイルによって試験することができる
。5. Springboot2.Xバージョンを、推奨HikariCPの公式データベース接続プール(デフォルトのデータベース接続プール)

(1)HikariCP的性能和并发性。如果有HikariCP,总是选择它
(2)否则,如果Tomcat池数据源可用,将使用它
(3)如果HikariCP和Tomcat池数据源都不可用,如果Commons DBCP2可用,将使用它
(4)如果springboot版本是2.X,当使用spring-boot-starter-jdbc依赖,springboot就会自动引入HikariCP的依赖了
(5)如果需要使用指定的数据库连接池
   5.1.需要在application.properties中配置:spring.datasource.type
   5.2.引入第三方数据库连接池依赖
公開された143元の記事 ウォン称賛10 ビュー7518

おすすめ

転載: blog.csdn.net/qq591009234/article/details/104016762