SpringBoot访问数据库
1.SpringBoot使用JDBC
创建项目
创建数据库表
#用户基本信息表
create table t_user(
user_id int primary key auto_increment,
user_name varchar(20),
user_age int,
user_address varchar(30)
);
创建javaBean
package com.lx.springboot.bean;
public class UserBean {
private int userid;
private String username;
private int userage;
private String useraddress;
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getUserage() {
return userage;
}
public void setUserage(int userage) {
this.userage = userage;
}
public String getUseraddress() {
return useraddress;
}
public void setUseraddress(String useraddress) {
this.useraddress = useraddress;
}
}
配置数据源application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
注意:在springboot2.0以上的版本中,mysql-connector-java用的6.0以上的版本,需要将原来的com.mysql.jdbc.Driver换成com.mysql.cj.jdbc.Driver
创建数据访问接口及其实现类
package com.lx.springboot.dao;
import com.lx.springboot.bean.UserBean;
import java.util.List;
import java.util.Map;
public interface UserBeanDao {
void insertUserBean(UserBean userBean);
void updateUserBean(UserBean userBean);
void deleteUserBean(int userid);
Map<String, Object> selectUserBeanById(int userid);
List<Map<String, Object>> selectUserBean();
}
package com.lx.springboot.dao.impl;
import com.lx.springboot.bean.UserBean;
import com.lx.springboot.dao.UserBeanDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.List;
import java.util.Map;
@Repository("userBeanDao")
class UserBeanDaoImpl implements UserBeanDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private DataSource dataSource;
@Override
public void insertUserBean(UserBean userBean) {
try {
Connection connection = dataSource.getConnection();
String insertsql = "insert into t_user value(null,?,?,?);";
PreparedStatement ps=connection.prepareStatement(insertsql);
ps.setString(1,userBean.getUsername());
ps.setInt(2,userBean.getUserage());
ps.setString(3,userBean.getUseraddress());
int temp= ps.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}
}
/*
@Override
public void insertUserBean(UserBean userBean) {
String insertsql="insert into t_user value(null,?,?,?);";
Object parms[]={userBean.getUsername(),userBean.getUserage(),
userBean.getUseraddress()};
int temp=jdbcTemplate.update(insertsql,parms);
}
*/
@Override
public void updateUserBean(UserBean userBean) {
String updatesql="update t_user set user_name=?,user_age=?,user_address=? where user_id=?";
Object parms[]={
userBean.getUsername(),userBean.getUserage(),
userBean.getUseraddress(),userBean.getUserid()};
int temp=jdbcTemplate.update(updatesql,parms);
}
@Override
public void deleteUserBean(int userid) {
String delete="delete from t_user where user_id=?";
int temp=jdbcTemplate.update(delete,1);
}
@Override
public Map<String, Object> selectUserBeanById(int userid) {
String select="select * from t_user where user_id=?";
return jdbcTemplate.queryForMap(select,userid);
}
@Override
public List<Map<String, Object>> selectUserBean() {
String select="select * from t_user";
return jdbcTemplate.queryForList(select);
}
}
创建业务访问接口及其实现类
package com.lx.springboot.service;
import com.lx.springboot.bean.UserBean;
import java.util.List;
import java.util.Map;
public interface UserBeanService {
void insertUserBean(UserBean userBean);
void updateUserBean(UserBean userBean);
void deleteUserBean(int userid);
UserBean selectUserBeanById(int userid);
List<Map<String, Object>> selectUserBean();
}
package com.lx.springboot.service.impl;
import com.lx.springboot.bean.UserBean;
import com.lx.springboot.dao.UserBeanDao;
import com.lx.springboot.service.UserBeanService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service("userBeanService")
public class UserBeanServiceImpl implements UserBeanService {
@Autowired
private UserBeanDao userBeanDao;
@Override
public void insertUserBean(UserBean userBean) {
userBeanDao.insertUserBean(userBean);
}
@Override
public void updateUserBean(UserBean userBean) {
userBeanDao.updateUserBean(userBean);
}
@Override
public void deleteUserBean(int userid) {
userBeanDao.deleteUserBean(userid);
}
@Override
public UserBean selectUserBeanById(int userid) {
Map<String,Object>usermap = userBeanDao.selectUserBeanById(userid);
UserBean userBean = new UserBean();
userBean.setUserid((Integer) usermap.get("user_id"));
userBean.setUsername((String) usermap.get("user_name"));
userBean.setUserage((Integer) usermap.get("user_age"));
userBean.setUseraddress((String) usermap.get("user_address"));
return userBean;
}
@Override
public List<Map<String, Object>> selectUserBean() {
return userBeanDao.selectUserBean();
}
}
创建控制器
package com.lx.springboot.controller;
import com.lx.springboot.bean.UserBean;
import com.lx.springboot.service.UserBeanService;
import org.apache.catalina.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
import java.util.Map;
@Controller
public class UserBeanController {
@Autowired
private UserBeanService userBeanService;
@RequestMapping(value = "/add")
@ResponseBody
public String add(){
try {
UserBean userBean = new UserBean();
userBean.setUsername("zhangsan");
userBean.setUserage(23);
userBean.setUseraddress("西安");
userBeanService.insertUserBean(userBean);
return "添加成功";
}catch (Exception e){
e.printStackTrace();
return "添加失败";
}
}
@RequestMapping(value = "/update")
@ResponseBody
public String update(){
try {
UserBean userBean = new UserBean();
userBean.setUserid(1);
userBean.setUsername("lisi");
userBean.setUserage(24);
userBean.setUseraddress("长安");
userBeanService.insertUserBean(userBean);
return "修改成功";
}catch (Exception e){
e.printStackTrace();
return "修改失败";
}
}
@RequestMapping(value = "/findbyid")
@ResponseBody
public UserBean findbyid(){
try {
return userBeanService.selectUserBeanById(1);
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@RequestMapping(value = "/find")
@ResponseBody
public List<Map<String,Object>> find(){
try {
return userBeanService.selectUserBean();
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@RequestMapping(value = "/delete")
@ResponseBody
public String delete(){
try {
userBeanService.deleteUserBean(1);
return "删除成功";
}catch (Exception e){
e.printStackTrace();
return "删除失败";
}
}
}
添加
修改
查询单条记录
查询全部
删除
2.SpringBoot使用MyBatis
创建数据库表
#用户基本信息表
create table t_user(
user_id int primary key auto_increment,
user_name varchar(20),
user_age int,
user_address varchar(30)
);
创建javaBean
package com.lx.springboot.bean;
public class UserBean {
private int userid;
private String username;
private int userage;
private String useraddress;
getXXXX()、setXXXX()
}
配置数据源application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource //配置使用阿里的数据源
注意:在springboot2.0以上的版本中,mysql-connector-java用的6.0以上的版本,需要将原来的com.mysql.jdbc.Driver换成com.mysql.cj.jdbc.Driver
创建druid数据源配置类
package com.lx.springboot.config;
import com.alibaba.druid.pool.DruidDataSource;
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 DruidConfig {
//创建数据源
//<bean id="" class=""></bean>
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid(){
return new DruidDataSource();
}
}
修改数据源配置application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
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
spring.datasource.poolPreparedStatements=true
mybatis.config-location=
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
创建数据访问接口
package com.lx.springboot.mapper;
import com.lx.springboot.bean.UserBean;
import java.util.List;
public interface UserBeanMapper {
void insertUserBean(UserBean userBean);
void updateUserBean(UserBean userBean);
void deleyeUserBeanById(int userid);
UserBean selectUserBeanById(int userid);
List<UserBean> selectUserBean();
}
创建sql映射文件【resources / resources/mapper 】
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lx.springboot.mapper.UserBeanMapper">
<insert id="insertUserBean" parameterType="com.lx.springboot.bean.UserBean">
insert into t_user value(null,#{
username},#{
userage},#{
useraddress})
</insert>
<update id="updateUserBean" parameterType="com.lx.springboot.bean.UserBean">
update t_user set user_name=#{
username},user_age=#{
userage},user_address=#{
useraddress}
where user_id=#{
userid}
</update>
<delete id="deleyeUserBeanById" parameterType="int">
delete from t_user where user_id=#{
userid}
</delete>
<resultMap id="userMap" type="com.lx.springboot.bean.UserBean">
<id property="userid" column="user_id"></id>
<result property="username" column="user_name"></result>
<result property="userage" column="user_age"></result>
<result property="useraddress" column="user_address"></result>
</resultMap>
<select id="selectUserBeanById" parameterType="int" resultMap="userMap">
select * from t_user where user_id=#{
userid}
</select>
<select id="selectUserBean" resultMap="userMap">
select * from t_user
</select>
</mapper>
创建MyBatis的配置类
package com.lx.springboot.config;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
//MyBatisConfig类加上@Configuration就是一个MyBatis核心配置类
//用这个MyBatis核心配置类代替mybaits-config.xml
//@MapperScan("数据访问接口所在包的包名称")
/*
<!--配置扫描数据库访问接口包,创建数据库访问接口对象-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xl.springboot.mapper"></property>
</bean>
*/
@MapperScan("com.lx.springboot.mapper")
@Configuration
public class MyBatisConfig {
@Bean
public ConfigurationCustomizer configurationCustomizer(){
return new ConfigurationCustomizer(){
@Override
public void customize(org.apache.ibatis.session.Configuration configuration) {
configuration.setMapUnderscoreToCamelCase(true);
}
};
}
}
在application.properties中配置MyBatis核心配置文件【mybaits-config.xml】和sql映射文件的位置
核心配置文件【mybaits-config.xml】的位置
mybatis.config-location=classpath:config/mybatis-configxml
sql映射文件的位置
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
创建业务访问接口及其实现类
package com.lx.springboot.service;
import com.lx.springboot.bean.UserBean;
import java.util.List;
import java.util.Map;
public interface UserBeanService {
void insertUserBean(UserBean userBean);
void updateUserBean(UserBean userBean);
void deleteUserBean(int userid);
UserBean selectUserBeanById(int userid);
List<UserBean> selectUserBean();
}
package com.lx.springboot.service.impl;
import com.lx.springboot.bean.UserBean;
import com.lx.springboot.mapper.UserBeanMapper;
import com.lx.springboot.service.UserBeanService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class UserBeanServiceImpl implements UserBeanService {
@Autowired
private UserBeanMapper userBeanMapper;
@Override
public void insertUserBean(UserBean userBean) {
userBeanMapper.insertUserBean(userBean);
}
@Override
public void updateUserBean(UserBean userBean) {
userBeanMapper.updateUserBean(userBean);
}
@Override
public void deleteUserBean(int userid) {
userBeanMapper.deleyeUserBeanById(userid);
}
@Override
public UserBean selectUserBeanById(int userid) {
return userBeanMapper.selectUserBeanById(userid);
}
@Override
public List<UserBean> selectUserBean() {
return userBeanMapper.selectUserBean();
}
}
创建控制器
package com.lx.springboot.controller;
import com.lx.springboot.bean.UserBean;
import com.lx.springboot.service.UserBeanService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.xml.ws.RequestWrapper;
import java.util.List;
import java.util.Map;
@Controller
public class UserBeanController {
@Autowired
private UserBeanService userBeanService;
@RequestMapping(value = "/add")
@ResponseBody
public String add(){
try {
UserBean userBean = new UserBean();
userBean.setUsername("zhaoliu");
userBean.setUserage(23);
userBean.setUseraddress("西安");
userBeanService.insertUserBean(userBean);
return "添加成功";
}catch (Exception e){
e.printStackTrace();
return "添加失败";
}
}
@RequestMapping(value = "/update")
@ResponseBody
public String update(){
try {
UserBean userBean = new UserBean();
userBean.setUserid(2);
userBean.setUsername("lisi");
userBean.setUserage(24);
userBean.setUseraddress("北京");
userBeanService.updateUserBean(userBean);
return "修改成功";
}catch (Exception e){
e.printStackTrace();
return "修改失败";
}
}
@RequestMapping(value = "/findbyid")
@ResponseBody
public UserBean findbyid(){
try {
return userBeanService.selectUserBeanById(2);
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@RequestMapping(value = "/find")
@ResponseBody
public List<UserBean> find(){
try {
return userBeanService.selectUserBean();
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@RequestMapping(value = "/delete")
@ResponseBody
public String delete(){
try {
userBeanService.deleteUserBean(2);
return "删除成功";
}catch (Exception e){
e.printStackTrace();
return "删除失败";
}
}
}