spring boot学习(四)之连接数据库整合jdbcTemplate

论坛 期权论坛 区块链     
梦凌小样   2018-11-21 22:45   3506   0
            添加数据库依赖
  1.                     org.springframework.boot            spring-boot-starter-jdbc                            mysql            mysql-connector-java        
复制代码
  1. application.properties
复制代码
配置文件中配置数据源
  1. spring.datasource.url = jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8spring.datasource.username = rootspring.datasource.password = 123456spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
复制代码
添加数据池依赖,这里用的是阿里巴巴的数据池
  1.                     com.alibaba            druid            1.0.19        
复制代码
在启动类
  1. Chapter1Application.java
复制代码
中读取数据源配置信息,Spring Boot会自动的用我们配置的这个DataSource。添加如下代码
  1.     @Autowired    private Environment environment;        public DataSource dataSource(destroyMethod =  "close") {        DruidDataSource dataSource = new DruidDataSource();        dataSource.setUrl(environment.getProperty("datasource.url"));        dataSource.setUsername(environment.getProperty("datasource.username"));        dataSource.setPassword(environment.getProperty("datasource.password"));        dataSource.setDriverClassName(environment.getProperty("datasource.driver-class-name"));        dataSource.setInitialSize(5);//初始化时建立物理连接的个数        dataSource.setMaxActive(20);//最大连接池数量        dataSource.setMinIdle(0);//最小连接池数量        dataSource.setMaxWait(50000);//获取连接时最大等待时间,单位毫秒。        dataSource.setValidationQuery("SELECT 1");//用来检测连接是否有效的sql        return dataSource;    }
复制代码
下面就用我们配置的这个数据源信息,用JdbcTemplate来与数据库进行数据交互

本地创建
  1. spring
复制代码
数据库,再创建一张
  1. user
复制代码
表,表属性如下,自行填几条数据:

1.png

[h3]简单的做了个查询的例子:[/h3]
  • 创建实体文件:
    1. User.java
    复制代码
  1. public class User {    private int id;    private String name;    private int age;    private String address;    private String phone;    //set and get}
复制代码
    1. controller
    复制代码
    层:
    1. UserController.java
    复制代码
    :
  1. @RestControllerpublic class UserController {    @Autowired    private UserService userService;    private Logger logger = LoggerFactory.getLogger(this.getClass());    @RequestMapping(value = "/queryUserList",method = RequestMethod.GET,produces="application/json;charset=UTF-8")    @ResponseBody    public String queryLearnList(HttpServletRequest request , HttpServletResponse response){        String name = request.getParameter("name");        String phone = request.getParameter("phone");        Map params = new HashMap();        params.put("name", name);        params.put("phone", phone);        List userList =userService.queryUserList(params);        return JSONArray.fromObject(userList).toString();    }
复制代码
    1. service
    复制代码
    层:接口
    1. UserService.java
    复制代码
    和实现类
    1. UserServiceImpl.java
    复制代码
  1. public interface UserService {    List queryUserList(Map params);}
复制代码
  1. @Servicepublic class UserServiceImpl implements UserService {    @Autowired    UserDao userDao;    @Override    public List queryUserList(Map params) {        return userDao.queryUserList(params);    }}
复制代码
    1. dao
    复制代码
    层:接口
    1. UserDao.java
    复制代码
    和实现类
    1. UserDaoImpl.java
    复制代码
  1. public interface UserDao {    public List queryUserList(Map params);}
复制代码
  1. UserDaoImpl .java
复制代码
注入
  1. JdbcTemplate
复制代码
,spring boot会自动选择我们配置好的数据源:
  1. @Repositorypublic class UserDaoImpl implements UserDao{    @Autowired    private JdbcTemplate jdbcTemplate;//这里直接引用即可    @Override    public List queryUserList(Map params) {        StringBuffer sql =new StringBuffer();        sql.append("select * from user where 1=1");        if(!StringUtil.isNull((String)params.get("name"))){            sql.append(" and name like '%").append((String)params.get("name")).append("%'");        }        if(!StringUtil.isNull((String)params.get("phone"))){            sql.append(" and phone like '%").append((String)params.get("phone")).append("%'");        }        List list = jdbcTemplate.query(sql.toString(),new BeanPropertyRowMapper(User.class));        return list;    }}
复制代码
[h2]结果[/h2]

运行项目,浏览器输入:
  1. http://localhost:8080/queryUserList
复制代码
,得到如下结果

1.png

[h2]总结[/h2]

在此实践过程可能会出现以下问题:第一个错误
  1. 报错信息
复制代码
:

1.png
  1. 原因
复制代码
:项目打了jar包,一旦运行就会有两个启动类,指定其中一个即可
  1. 解决办法
复制代码
:在pom.xml的plugin下面添加如下配置即可
  1.     com.mlin.ChapterApplication
复制代码
第二个错误

报错信息:
  1. java.sql.SQLException: The server time zone value 'ú±ê×±' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
复制代码
  1. 原因
复制代码
:没有配置时区信息
  1. 解决办法
复制代码
:在配置数据源的时候加上
  1. serverTimezone=GMT%2B8
复制代码
  1. datasource.url = jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
复制代码
第三个错误
  1. 报错信息
复制代码
:就是在用到
  1. return JSONArray.fromObject(userList).toString();
复制代码
时,引入
  1. net.sf.json-lib
复制代码
依赖一直引入不进去
  1. 原因
复制代码
:要指定jdk
  1. 解决办法
复制代码
:加入
  1. jdk15
复制代码
即可,但是改成jdk8或是jdk7不行:
  1.                    net.sf.json-lib            json-lib            2.4            jdk15        
复制代码
原创作者:梦凌小样
作品链接:https://www.jianshu.com/p/45eb56f448ae【原创不易,转载请注明出处,感谢理解】
一位爱生活,爱创作,爱分享,爱自己的90后女程序员一枚,记录工作中的点点滴滴,一起学习,共同进步,期待能和优秀的您交上朋友
         
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP