kotlin连接mysql数据库详细教程

编程入门 行业动态 更新时间:2024-10-09 15:16:33

kotlin连接mysql<a href=https://www.elefans.com/category/jswz/34/1771350.html style=数据库详细教程"/>

kotlin连接mysql数据库详细教程

1、mongodb的低版本bson无法转换类型

比如MongoDB数据库表的字段类型为Decimal,实体类用String去定义就会报如下错误

No converter found capablof converting from type [org.bson.types.Decimal128] to type [java.lang.String]

解决方法

2、排除自带的MongoDB依赖,添加自定义添加依赖

spring-boot-starter-data-mongodb有多少个与MongoDB有关系的都排除出去

org.springframework.boot

spring-boot-starter-data-mongodb

logback-classic

ch.qos.logback

spring-boot-starter-logging

org.springframework.boot

org.mongodb

mongodb-driver

org.mongodb

mongodb-driver-core

org.mongodb

bson

3、自定义高版本的jar依赖

org.mongodb

mongodb-driver

3.12.5

org.mongodb

mongodb-driver-core

3.12.5

org.mongodb

bson

3.12.5

4、数据源配置解决方法

MongoDB报Exception authenticating MongoCredential异常及权限问题处理解决,参考文章处理

mongodb://用户名:密码@机器IP:端口/数据库名?授权源=授权的名称

由于安装的时候是以授权模式进行安装的,详情请参考Docker安装MongoDB

# MongoDB数据库配置

# mongodb://用户名:密码@机器IP:端口/数据库名?授权源=授权的名称

spring.data.mongodb.uri=mongodb://liangjl:123456@192.168.1.231:27017/mongoDB?authSource=admin

5、实体类

import org.springframework.data.annotation.Id

import org.springframework.data.mongodb.core.mapping.Document

import java.math.BigDecimal

import java.util.*

@Document(collection = "sales")

data class Sales constructor(

/**

* id

*/

@Id

var id: String? = null,

/**

* 条目

*/

var item: String? = null,

/**

* 价钱

*/

var price: BigDecimal? = null,

/**

* 数量

*/

var quantity: Int? = null,

/**

* 时间

*/

var date: Date? = null

)

6、SalesService详解

查询所有销售订单数据

@Autowired lateinit var mongoTemplate: MongoTemplate

/**

* 查询所有销售订单数据

* @return

*/

fun findAll(): List {

return mongoTemplate.findAll(Sales::class.java)

}

查询所有销售订单数据,通过价格进行排序

/**

* 查询所有销售订单数据,通过价格进行排序

* SQL 语句中, asc是指定列按升序排列,desc则是指定列按降序排列。

* @return

*/

fun findSort(): List {

//按照价格与数量字段升序查询出来,

var sort = Sort(Sort.Direction.ASC, "price").and(Sort(Sort.Direction.ASC, "quantity"))

//查询item为abc的数据进行

var criteria = Criteria.where("item").`is`("abc")

var query = Query(criteria)

//限制1000条数据

return mongoTemplate.find(query.with(sort).limit(1000), Sales::class.java)

}

查询所有销售订单数据,通过价格进行排序

/**

* 查询所有销售订单数据,通过价格进行排序

* SQL 语句中, asc是指定列按升序排列,desc则是指定列按降序排列。

* @return

*/

fun findSort(): List {

//按照价格与数量字段升序查询出来,

var sort = Sort(Sort.Direction.ASC, "price").and(Sort(Sort.Direction.ASC, "quantity"))

//查询item为abc的数据进行

var criteria = Criteria.where("item").`is`("abc")

var query = Query(criteria)

//限制1000条数据

return mongoTemplate.find(query.with(sort).limit(1000), Sales::class.java)

}

gt 大于函数的使用,查询价格大于6元的销售订单数据

fun findGt(): List {

//查询价格大于6元的销售订单数据

var criteria = Criteria.where("price").gt(6)

var query = Query(criteria)

return mongoTemplate.find(query, Sales::class.java)

}

查询价格小于6元的销售订单数据

fun findLt(): List {

//查询价格小于6元的销售订单数据

var criteria = Criteria.where("price").lt(6)

var query = Query(criteria)

return mongoTemplate.find(query, Sales::class.java)

}

通过Id去查询销售订单数据

/**

* 在MongoDB插入脚本的时候是以数字的进行插入是,这里用String去根据Id去查询是查行不到数据

* 在mongoDB查询是数据变成,所以id可以看做Long或者Double类型入参进行查询

*

* fun getOne(id: Long): Sales? {}

* fun getOne(id: Double): Sales? {}

*

* {

* "_id" : 1.0,

* "item" : "abc",

* "price" : NumberDecimal("10"),

* "quantity" : 2,

* "date" : ISODate("2014-03-01T08:00:00.000Z")

* }

*/

fun getOne(id: Long): Sales? {

val query = Query(Criteria.where("id").`is`(id))

var sales = mongoTemplate.findOne(query, Sales::class.java)

return sales

}

插入数据

/**

* 插入数据

*/

fun addSales() {

var id = IdWorker.getId().toString()

var sale = Sales(id, "葡萄", BigDecimal(20), 1, Date())

//方法一

//mongoTemplate.insert(sale)

//方法二

mongoTemplate.save(sale)

}

删除数据

/**

* 删除数据

*/

fun deleteById(id: String) {

val query = Query(Criteria.where("id").`is`(id))

mongoTemplate.remove(query, Sales::class.java)

}

修改数据

/**

* 修改数据

*/

fun update(sales: Sales) {

var query = Query(Criteria.where("id").`is`(sales.id))

var update = Update().set("item", sales.item).set("quantity", sales.quantity)

//更新查询返回结果集的第一条

var first = mongoTemplate.updateFirst(query, update, Sales::class.java)

println("update:" + first)

//更新查询返回结果集的所有

// mongoTemplate.updateMulti(query,update, Sales::class.java)

}

7、SalesController代码

@RestController

@RequestMapping("/rest/sales/")

open class SalesController : BaseController() {

@Autowired lateinit var salesService: SalesService

/**

* 查询所有信息

*/

@GetMapping("/findAll")

fun findAll(): List? {

return salesService.findAll()

}

/**

* 排序的使用

*/

@GetMapping("/findSort")

fun findSort(): List? {

return salesService.findSort()

}

/**

* 大于的使用

*/

@GetMapping("/findGt")

fun findGt(): List? {

return salesService.findGt()

}

/**

* 小于的使用

*/

@GetMapping("/findLt")

fun findLt(): List? {

return salesService.findLt()

}

/**

* 根据Id去查询一条数据

*/

@GetMapping("/getOne/{id}")

fun getOne(@PathVariable("id") id:Long): Sales? {

return salesService.getOne(id)

}

/**

* 插入一条数据

*/

@PostMapping("/insert")

fun insert(): Unit {

return salesService.addSales()

}

/**

* 删除一条数据

*/

@PutMapping("/deleteById/{id}")

fun deleteById(@PathVariable("id") id:String): Unit {

return salesService.deleteById(id)

}

/**

* 修改一条数据

* 假设如下的数据,传的JSON体为

* Content-Type = application/json;charset=UTF-8

*

* { "id" : "1278573453263409154", "item" : "苹果", "quantity" : 10 }

*/

@PutMapping("/update")

fun update(@RequestBody sales:Sales): Unit {

return salesService.update(sales)

}

}

8、数据库表脚本

db.sales.insertMany([

{ "_id" : 1, "item" : "abc", "price" : NumberDecimal("10"), "quantity" : NumberInt("2"), "date" : ISODate("2014-03-01T08:00:00Z") },

{ "_id" : 2, "item" : "jkl", "price" : NumberDecimal("20"), "quantity" : NumberInt("1"), "date" : ISODate("2014-03-01T09:00:00Z") },

{ "_id" : 3, "item" : "xyz", "price" : NumberDecimal("5"), "quantity" : NumberInt( "10"), "date" : ISODate("2014-03-15T09:00:00Z") },

{ "_id" : 4, "item" : "xyz", "price" : NumberDecimal("5"), "quantity" : NumberInt("20") , "date" : ISODate("2014-04-04T11:21:39.736Z") },

{ "_id" : 5, "item" : "abc", "price" : NumberDecimal("10"), "quantity" : NumberInt("10") , "date" : ISODate("2014-04-04T21:23:13.331Z") },

{ "_id" : 6, "item" : "def", "price" : NumberDecimal("7.5"), "quantity": NumberInt("5" ) , "date" : ISODate("2015-06-04T05:08:13Z") },

{ "_id" : 7, "item" : "def", "price" : NumberDecimal("7.5"), "quantity": NumberInt("10") , "date" : ISODate("2015-09-10T08:43:00Z") },

{ "_id" : 8, "item" : "abc", "price" : NumberDecimal("10"), "quantity" : NumberInt("5" ) , "date" : ISODate("2016-02-06T20:20:13Z") },

])

9、运行结果

[查询全部销售订单数据](http://localhost:8080/rest/sales/findAll)

[根据Id查询销售订单](http://localhost:8080/rest/sales/getOne/1)

更新

查询全部销售订单数据

根据Id去查询

10、Docker安装MongoDB

11、整合原代码Github地址

更多推荐

kotlin连接mysql数据库详细教程

本文发布于:2024-02-05 10:50:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1745018.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据库   教程   详细   kotlin   mysql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!