Prismaの基本操作(MySQL CRUD処理)
本記事の内容
TypeScriptやGo言語をサポートしているPrismaの説明です。MySQLのCRUD処理に関した記事となります。
※TBLの作成方法はマイグレーション編を参考にしてください。
基本情報
ディレクトリ構成
~/develop/study/starter $ tree -I node_modules
.
├── package-lock.json
├── package.json
├── prisma
│ ├── dev.db
│ └── schema.prisma
├── script.ts
└── tsconfig.json
1 directory, 6 files
CREATE(INSERT文)
1レコード追加
【script.ts】
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
/** Userテーブルに1レコード追加 */
async function main() {
/** テーブル名はprisma.TBL名の箇所で指定。 */
const allUsers = await prisma.user.create({
data:{
email:'[email protected]',
name:'user1'
}
})
console.dir(allUsers, { depth: null })
}
main()
.catch(e => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})
複数レコード追加
【script.ts】
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
/** Userテーブルに複数レコード追加 */
async function main() {
/** テーブル名はprisma.TBL名の箇所で指定。 */
const allUsers = await prisma.user.createMany({
data:[
{ email:'[email protected]',name:'user1'},
{ email:'[email protected]',name:'user2'},
{ email:'[email protected]',name:'user3'},
]
})
console.dir(allUsers, { depth: null })
}
main()
.catch(e => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})
Read(SELECT文)
1レコードのみ取得
【script.ts】
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
/** Userテーブルに1レコードのみ取得 */
async function main() {
/** テーブル名はprisma.TBL名の箇所で指定。 */
const allUsers = await prisma.user.findUnique({
where: {
email: '[email protected]',
},
})
console.dir(allUsers, { depth: null })
}
main()
.catch(e => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})
複数レコード取得
【script.ts】
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
/** Userテーブルに複数レコード取得 */
async function main() {
/** テーブル名はprisma.TBL名の箇所で指定。 */
const allUsers = await prisma.user.findMany({
})
console.dir(allUsers, { depth: null })
}
main()
.catch(e => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})
複数条件でのレコード取得
【script.ts】
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
/** Userテーブルに複数レコード取得 */
async function main() {
/** テーブル名はprisma.TBL名の箇所で指定。 */
const allUsers = await prisma.user.findMany({
where: {
AND: {
email:'[email protected]',
name:'user1'
}
}
})
console.dir(allUsers, { depth: null })
}
main()
.catch(e => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})
UPDATE(UPDATE文)
1レコードのみ更新
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
/** Userテーブルに1レコードのみ更新 */
async function main() {
/** テーブル名はprisma.TBL名の箇所で指定。 */
const allUsers = await prisma.user.update({
/**更新レコードを指定 */
where: {
email:'[email protected]',
},
/**更新内容 */
data:{
name:'kouji',
},
})
console.dir(allUsers, { depth: null })
}
main()
.catch(e => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})
複数レコード更新
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
/** Userテーブルに複数レコード更新 */
async function main() {
/** テーブル名はprisma.TBL名の箇所で指定。 */
const allUsers = await prisma.user.updateMany({
/**更新内容 */
data:{
name:'kkfactory',
},
})
console.dir(allUsers, { depth: null })
}
main()
.catch(e => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})
DELTE(DELTE文)
1レコードのみ削除
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
/** Userテーブルに複数レコード取得 */
async function main() {
/** テーブル名はprisma.TBL名の箇所で指定。 */
const allUsers = await prisma.user.delete({
where:{
email:'[email protected]'
}
})
console.dir(allUsers, { depth: null })
}
main()
.catch(e => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})
複数レコード削除
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
/** Userテーブルに複数レコード取得 */
async function main() {
/** テーブル名はprisma.TBL名の箇所で指定。 */
const allUsers = await prisma.user.deleteMany({
})
console.dir(allUsers, { depth: null })
}
main()
.catch(e => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})
Author And Source
この問題について(Prismaの基本操作(MySQL CRUD処理)), 我々は、より多くの情報をここで見つけました https://qiita.com/kouji0705/items/cdfecb6d6e654b28aa7c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .