Java 如何将Spring与MySQL数据库连接?

Java 如何将Spring与MySQL数据库连接?,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我有一个简单的项目,基于。我创建了一个简单的REST接口,希望它使用我的数据库。我将Hibernate添加到依赖项中,并创建了DAO类。我正在为IDE使用Spring工具套件。据我所知,我应该添加一些bean来告诉类使用什么,但我不知道如何使用。这是我的课 Application.java package com.learnspring.projectfirst; @SpringBootApplication public class Application { public st

我有一个简单的项目,基于。我创建了一个简单的REST接口,希望它使用我的数据库。我将Hibernate添加到依赖项中,并创建了DAO类。我正在为IDE使用Spring工具套件。据我所知,我应该添加一些bean来告诉类使用什么,但我不知道如何使用。这是我的课

Application.java

package com.learnspring.projectfirst;

@SpringBootApplication
public class Application {

     public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
}
package com.learnspring.projectfirst;

@Entity
public class Marker {

    @Id
    @Column
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;
    @Column
    private double longitude;
    @Column
    private double latitude;

    @Column
    private String address;

    public Marker() {
        // Empty constructor
    }

    public Marker(long id, double longitude, double latitude, String address) {
        this.id = id;
        this.longitude = longitude;
        this.latitude = latitude;
        this.address = address;
    }

    //Getters and Setters
}
package com.learnspring.projectfirst.controller;

@Controller
public class MarkerController {
    private Logger logger = Logger.getLogger(MarkerController.class.getName());
    @Autowired
    private MarkerServiceImplementation markerService;

    @RequestMapping(value="/markers", method=RequestMethod.GET)
    public @ResponseBody List<Marker> getMarkers(@RequestParam(value="city", defaultValue="") String city) {
        return this.markerService.getAllMarkers();
    }

    @RequestMapping(value="/markers/new", method=RequestMethod.POST)
    public @ResponseBody Marker addMarker(@RequestBody Marker marker) {
        this.markerService.addMarker(marker);
        return marker;
    }

}
package com.learnspring.projectfirst.dao;

@Repository
public class MarkerDaoImplementation implements MarkerDaoInterface {

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public void addMarker(Marker marker) {
        this.sessionFactory.getCurrentSession().save(marker);
    }

    @Override
    public void deleteMarker(int markerId) {
        this.sessionFactory.getCurrentSession().delete(this.getMarker(markerId));
    }

    @Override
    public Marker getMarker(int markerId) {
        return (Marker) this.sessionFactory.getCurrentSession().get(Marker.class, markerId);
    }

    @Override
    public List<Marker> getAllMarkers() {
        return this.sessionFactory.getCurrentSession().createQuery("from Marker").list();
    }

}
package com.learnspring.projectfirst.service;

@Service
public class MarkerServiceImplementation implements MarkerServiceInterface {
    @Autowired
    private MarkerDaoImplementation markerDao;

    @Transactional
    public void addMarker(Marker marker) {
        this.markerDao.addMarker(marker);
    }

    @Transactional
    public void deleteMarker(int markerId) {
        this.markerDao.deleteMarker(markerId);
    }

    @Transactional
    public Marker getMarker(int markerId) {
        return this.markerDao.getMarker(markerId);
    }

    @Transactional
    public List<Marker> getAllMarkers() {
        return this.markerDao.getAllMarkers();
    }
}
Marker.java

package com.learnspring.projectfirst;

@SpringBootApplication
public class Application {

     public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
}
package com.learnspring.projectfirst;

@Entity
public class Marker {

    @Id
    @Column
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;
    @Column
    private double longitude;
    @Column
    private double latitude;

    @Column
    private String address;

    public Marker() {
        // Empty constructor
    }

    public Marker(long id, double longitude, double latitude, String address) {
        this.id = id;
        this.longitude = longitude;
        this.latitude = latitude;
        this.address = address;
    }

    //Getters and Setters
}
package com.learnspring.projectfirst.controller;

@Controller
public class MarkerController {
    private Logger logger = Logger.getLogger(MarkerController.class.getName());
    @Autowired
    private MarkerServiceImplementation markerService;

    @RequestMapping(value="/markers", method=RequestMethod.GET)
    public @ResponseBody List<Marker> getMarkers(@RequestParam(value="city", defaultValue="") String city) {
        return this.markerService.getAllMarkers();
    }

    @RequestMapping(value="/markers/new", method=RequestMethod.POST)
    public @ResponseBody Marker addMarker(@RequestBody Marker marker) {
        this.markerService.addMarker(marker);
        return marker;
    }

}
package com.learnspring.projectfirst.dao;

@Repository
public class MarkerDaoImplementation implements MarkerDaoInterface {

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public void addMarker(Marker marker) {
        this.sessionFactory.getCurrentSession().save(marker);
    }

    @Override
    public void deleteMarker(int markerId) {
        this.sessionFactory.getCurrentSession().delete(this.getMarker(markerId));
    }

    @Override
    public Marker getMarker(int markerId) {
        return (Marker) this.sessionFactory.getCurrentSession().get(Marker.class, markerId);
    }

    @Override
    public List<Marker> getAllMarkers() {
        return this.sessionFactory.getCurrentSession().createQuery("from Marker").list();
    }

}
package com.learnspring.projectfirst.service;

@Service
public class MarkerServiceImplementation implements MarkerServiceInterface {
    @Autowired
    private MarkerDaoImplementation markerDao;

    @Transactional
    public void addMarker(Marker marker) {
        this.markerDao.addMarker(marker);
    }

    @Transactional
    public void deleteMarker(int markerId) {
        this.markerDao.deleteMarker(markerId);
    }

    @Transactional
    public Marker getMarker(int markerId) {
        return this.markerDao.getMarker(markerId);
    }

    @Transactional
    public List<Marker> getAllMarkers() {
        return this.markerDao.getAllMarkers();
    }
}
MarkerController.java

package com.learnspring.projectfirst;

@SpringBootApplication
public class Application {

     public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
}
package com.learnspring.projectfirst;

@Entity
public class Marker {

    @Id
    @Column
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;
    @Column
    private double longitude;
    @Column
    private double latitude;

    @Column
    private String address;

    public Marker() {
        // Empty constructor
    }

    public Marker(long id, double longitude, double latitude, String address) {
        this.id = id;
        this.longitude = longitude;
        this.latitude = latitude;
        this.address = address;
    }

    //Getters and Setters
}
package com.learnspring.projectfirst.controller;

@Controller
public class MarkerController {
    private Logger logger = Logger.getLogger(MarkerController.class.getName());
    @Autowired
    private MarkerServiceImplementation markerService;

    @RequestMapping(value="/markers", method=RequestMethod.GET)
    public @ResponseBody List<Marker> getMarkers(@RequestParam(value="city", defaultValue="") String city) {
        return this.markerService.getAllMarkers();
    }

    @RequestMapping(value="/markers/new", method=RequestMethod.POST)
    public @ResponseBody Marker addMarker(@RequestBody Marker marker) {
        this.markerService.addMarker(marker);
        return marker;
    }

}
package com.learnspring.projectfirst.dao;

@Repository
public class MarkerDaoImplementation implements MarkerDaoInterface {

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public void addMarker(Marker marker) {
        this.sessionFactory.getCurrentSession().save(marker);
    }

    @Override
    public void deleteMarker(int markerId) {
        this.sessionFactory.getCurrentSession().delete(this.getMarker(markerId));
    }

    @Override
    public Marker getMarker(int markerId) {
        return (Marker) this.sessionFactory.getCurrentSession().get(Marker.class, markerId);
    }

    @Override
    public List<Marker> getAllMarkers() {
        return this.sessionFactory.getCurrentSession().createQuery("from Marker").list();
    }

}
package com.learnspring.projectfirst.service;

@Service
public class MarkerServiceImplementation implements MarkerServiceInterface {
    @Autowired
    private MarkerDaoImplementation markerDao;

    @Transactional
    public void addMarker(Marker marker) {
        this.markerDao.addMarker(marker);
    }

    @Transactional
    public void deleteMarker(int markerId) {
        this.markerDao.deleteMarker(markerId);
    }

    @Transactional
    public Marker getMarker(int markerId) {
        return this.markerDao.getMarker(markerId);
    }

    @Transactional
    public List<Marker> getAllMarkers() {
        return this.markerDao.getAllMarkers();
    }
}
package com.learnspring.projectfirst.controller;
@控制器
公共类标记控制器{
私有记录器=Logger.getLogger(MarkerController.class.getName());
@自动连线
私有markerService实现markerService;
@RequestMapping(value=“/markers”,method=RequestMethod.GET)
public@ResponseBody List getMarkers(@RequestParam(value=“city”,defaultValue=“”)字符串城市){
返回这个.markerService.getAllMarkers();
}
@RequestMapping(value=“/markers/new”,method=RequestMethod.POST)
public@ResponseBody Marker addMarker(@RequestBody Marker Marker){
this.markerService.addMarker(marker);
返回标记;
}
}
MarkerDaoImplementation.java

package com.learnspring.projectfirst;

@SpringBootApplication
public class Application {

     public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
}
package com.learnspring.projectfirst;

@Entity
public class Marker {

    @Id
    @Column
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;
    @Column
    private double longitude;
    @Column
    private double latitude;

    @Column
    private String address;

    public Marker() {
        // Empty constructor
    }

    public Marker(long id, double longitude, double latitude, String address) {
        this.id = id;
        this.longitude = longitude;
        this.latitude = latitude;
        this.address = address;
    }

    //Getters and Setters
}
package com.learnspring.projectfirst.controller;

@Controller
public class MarkerController {
    private Logger logger = Logger.getLogger(MarkerController.class.getName());
    @Autowired
    private MarkerServiceImplementation markerService;

    @RequestMapping(value="/markers", method=RequestMethod.GET)
    public @ResponseBody List<Marker> getMarkers(@RequestParam(value="city", defaultValue="") String city) {
        return this.markerService.getAllMarkers();
    }

    @RequestMapping(value="/markers/new", method=RequestMethod.POST)
    public @ResponseBody Marker addMarker(@RequestBody Marker marker) {
        this.markerService.addMarker(marker);
        return marker;
    }

}
package com.learnspring.projectfirst.dao;

@Repository
public class MarkerDaoImplementation implements MarkerDaoInterface {

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public void addMarker(Marker marker) {
        this.sessionFactory.getCurrentSession().save(marker);
    }

    @Override
    public void deleteMarker(int markerId) {
        this.sessionFactory.getCurrentSession().delete(this.getMarker(markerId));
    }

    @Override
    public Marker getMarker(int markerId) {
        return (Marker) this.sessionFactory.getCurrentSession().get(Marker.class, markerId);
    }

    @Override
    public List<Marker> getAllMarkers() {
        return this.sessionFactory.getCurrentSession().createQuery("from Marker").list();
    }

}
package com.learnspring.projectfirst.service;

@Service
public class MarkerServiceImplementation implements MarkerServiceInterface {
    @Autowired
    private MarkerDaoImplementation markerDao;

    @Transactional
    public void addMarker(Marker marker) {
        this.markerDao.addMarker(marker);
    }

    @Transactional
    public void deleteMarker(int markerId) {
        this.markerDao.deleteMarker(markerId);
    }

    @Transactional
    public Marker getMarker(int markerId) {
        return this.markerDao.getMarker(markerId);
    }

    @Transactional
    public List<Marker> getAllMarkers() {
        return this.markerDao.getAllMarkers();
    }
}
package com.learnspring.projectfirst.dao;
@存储库
公共类MarkerDao实现实现了MarkerDao接口{
@自动连线
私人会话工厂会话工厂;
@凌驾
公共空白添加标记(标记标记){
this.sessionFactory.getCurrentSession().save(标记);
}
@凌驾
公共无效删除标记(int-markerId){
this.sessionFactory.getCurrentSession().delete(this.getMarker(markerId));
}
@凌驾
公共标记getMarker(int-markerId){
返回(Marker)this.sessionFactory.getCurrentSession().get(Marker.class,markerId);
}
@凌驾
公共列表getAllMarkers(){
返回此.sessionFactory.getCurrentSession().createQuery(“来自标记”).list();
}
}
MarkerServiceImplementation.java

package com.learnspring.projectfirst;

@SpringBootApplication
public class Application {

     public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
}
package com.learnspring.projectfirst;

@Entity
public class Marker {

    @Id
    @Column
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;
    @Column
    private double longitude;
    @Column
    private double latitude;

    @Column
    private String address;

    public Marker() {
        // Empty constructor
    }

    public Marker(long id, double longitude, double latitude, String address) {
        this.id = id;
        this.longitude = longitude;
        this.latitude = latitude;
        this.address = address;
    }

    //Getters and Setters
}
package com.learnspring.projectfirst.controller;

@Controller
public class MarkerController {
    private Logger logger = Logger.getLogger(MarkerController.class.getName());
    @Autowired
    private MarkerServiceImplementation markerService;

    @RequestMapping(value="/markers", method=RequestMethod.GET)
    public @ResponseBody List<Marker> getMarkers(@RequestParam(value="city", defaultValue="") String city) {
        return this.markerService.getAllMarkers();
    }

    @RequestMapping(value="/markers/new", method=RequestMethod.POST)
    public @ResponseBody Marker addMarker(@RequestBody Marker marker) {
        this.markerService.addMarker(marker);
        return marker;
    }

}
package com.learnspring.projectfirst.dao;

@Repository
public class MarkerDaoImplementation implements MarkerDaoInterface {

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public void addMarker(Marker marker) {
        this.sessionFactory.getCurrentSession().save(marker);
    }

    @Override
    public void deleteMarker(int markerId) {
        this.sessionFactory.getCurrentSession().delete(this.getMarker(markerId));
    }

    @Override
    public Marker getMarker(int markerId) {
        return (Marker) this.sessionFactory.getCurrentSession().get(Marker.class, markerId);
    }

    @Override
    public List<Marker> getAllMarkers() {
        return this.sessionFactory.getCurrentSession().createQuery("from Marker").list();
    }

}
package com.learnspring.projectfirst.service;

@Service
public class MarkerServiceImplementation implements MarkerServiceInterface {
    @Autowired
    private MarkerDaoImplementation markerDao;

    @Transactional
    public void addMarker(Marker marker) {
        this.markerDao.addMarker(marker);
    }

    @Transactional
    public void deleteMarker(int markerId) {
        this.markerDao.deleteMarker(markerId);
    }

    @Transactional
    public Marker getMarker(int markerId) {
        return this.markerDao.getMarker(markerId);
    }

    @Transactional
    public List<Marker> getAllMarkers() {
        return this.markerDao.getAllMarkers();
    }
}
package com.learnspring.projectfirst.service;
@服务
公共类MarkerServiceImplementation实现MarkerServiceInterface{
@自动连线
私有标记道实现标记道;
@交易的
公共空白添加标记(标记标记){
this.markerDao.addMarker(marker);
}
@交易的
公共无效删除标记(int-markerId){
this.markerDao.deleteMarker(markerId);
}
@交易的
公共标记getMarker(int-markerId){
返回此.markerDao.getMarker(markerId);
}
@交易的
公共列表getAllMarkers(){
返回这个.markerDao.getAllMarkers();
}
}
下面是文件结构:

我知道我应该用bean告诉我的程序数据库名和列,但我不知道如何告诉。如何将java代码链接到bean?抱歉,我粘贴了这么多代码,我只是想确保您拥有所需的一切。提前谢谢你

参考此示例:

您的“Marker”类中的注释确定MySQL表和列名(基于类和类变量名)。表名将是“标记”,带有“id”、“经度”、“纬度”、“地址”列


您忘记了代码中最重要的部分:spring配置。它确定在注入DAO类之前如何初始化SessionFactory实例。在这里,您必须设置到MySQL服务器的适当连接(例如通过JNDI资源)

这就是您需要的连接:

在本例中,bean是通过java添加的。我理解对了吗?github上有10个样本。看看这个搜索,看看Spring Boot。是的,我知道Marker类中的注释。我应该在哪里添加spring配置?我应该做一些特定的事情来告诉我的程序使用它吗?有几种选择(XML或java配置)。我不知道spring引导配置,但我想您可以使用注释(@configuration)来实现这一点