• scalikeJDBC介绍


    ScalikeJDBC 基于 SQL 的简介 DB 访问
     
    1. 什么是 ScalikeJDBC
    ScalikeJDBC 是一款给 Scala 开发者使用的简洁 DB 访问类库,它是基于 SQL 的,使用者
    只需要关注 SQL 逻辑的编写,所有的数据库操作都交给 ScalikeJDBC。这个类库内置包含了
    JDBC API,并且给用户提供了简单易用并且非常灵活的 API。并且,QueryDSL(通用查询查询
    框架)使你的代码类型安全的并且可重复使用。我们可以在生产环境大胆地使用这款 DB 访问
    类库。
    2. 项目中使用 ScalikeJDBC
     <dependencies>
            <dependency>
                <groupId>org.scalikejdbc</groupId>
                <artifactId>scalikejdbc_2.11</artifactId>
                <version>2.5.0</version> </dependency>
            <!-- 解析配置文件application.properties -->
            <dependency>
                <groupId>org.scalikejdbc</groupId>
                <artifactId>scalikejdbc-config_2.11</artifactId>
                <version>2.5.0</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version> </dependency>
        </dependencies>
    数据库CURD
    1. 配置数据库信息
    # MySQL example
    db.default.driver="com.mysql.jdbc.Driver"
    db.default.url="jdbc:mysql://localhost:3306/bank?characterEncoding=utf-8"
    db.default.user="root"
    db.default.password="root"
    #测试
    db.test.driver="com.mysql.jdbc.Driver"
    db.test.url="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8"
    db.test.user="root"
    db.test.password="root"
    更多配置请参考官网.
    注意:默认加载application.conf文件
    2. 加载数据配置信息
    // 加载数据库配置信息
     // 默认加载 db.default.* 
    DBs.setup() 
    // 加载 db.sheep 配置信息 
    DBs.setup('sheep)
    3. 增删改查 crud
    import java.sql.Connection
    
    import scalikejdbc.{ConnectionPool, DB, SQL}
    import scalikejdbc.config.DBs
    //使用scala 操作数据库
    /*case class offsets(topic:String,groupId:String,partitionId:Int,offset)*/
    object TestCRUD1 {
      case class Student(age:Int,name:String,sex:Int)
      //查询
      def query()={
        import scalikejdbc._
        val students = DB readOnly(implicit session => {
          sql"select * from accounter ".map(rs => Student(rs.int(1), rs.string("aname"), rs.int(3))).list().apply()
        })
        students.foreach(stu=>println(s"id:${stu.age},name:${stu.name},count:${stu.sex}"))
        //查询数据并返回单个列 并将列数据封装到集合中
      }
    
      //测试库查询
      def test()={
        import scalikejdbc._
        val students = NamedDB('test) readOnly(implicit session => {
          sql"select * from accounter ".map(rs => Student(rs.int(1), rs.string(2), rs.int(3))).list().apply()
        })
        students.foreach(println)
      }
    
      //插入
      def insert()={
        import scalikejdbc._
        val i = DB.autoCommit { implicit session =>
          SQL("insert into accounter(aname,balance) value(?,?)").bind("te", "1").update().apply()
        }
        println(i)
      }
    
      //更新
      def update()={
        import scalikejdbc._
        DB.localTx{implicit session=>
          sql"update accounter set aname=? where aid=2".bind("123").update().apply()
        }
      }
      //更新修改
      def update1()={
        val s = DB autoCommit (implicit session => {
          import scalikejdbc._
          sql"update accounter set aname='ls' where aid=?".bind(2).update().apply()
        })
      }
    
      //删除数据
      def del()={
        import scalikejdbc._
        val row=DB autoCommit(implicit session=>{
          sql"delete from accounter where aid=?".bind(1).update().apply()
        })
        println(s"受影响的行数+$row")
      }
    
     def data(): Unit ={
       import scalikejdbc._
       val result: List[String] = NamedDB('zcw) readOnly(implicit session => {
         sql"select username from tb_user".map(rs =>{
           rs.string("username") }).list().apply()
       })
       result.foreach(println(_))
     }
    
    
      def main(args: Array[String]): Unit = {
        //解析配置文件
       DBs.setupAll()
        //加载指定数据库的配置文件
        DBs.setup('test)
        //query()
        //test()
        //insert()
        //update()
       // update1()
        //del()
    
        //连接池
        import scalikejdbc._
        val conn: Connection = ConnectionPool.borrow()
        val tuples = using(DB(ConnectionPool.borrow())) {
          db =>
            db.readOnly { implicit session =>
              sql"select * from accounter".map(rs => (rs.int(1), rs.string(2), rs.int(3))).list().apply()
            }
        }
        tuples.foreach(println(_))
      }
    }
     
     
     
  • 相关阅读:
    设计模式--总结
    设计模式--行为型模式--解释器模式
    设计模式--行为型模式--备忘录模式
    设计模式--行为型模式--访问者模式(Visitor模式)
    设计模式--行为型模式--迭代器模式
    设计模式--行为型模式--中介者模式
    js常用方法集合
    CSS 每隔4行显示不同样式的表格
    常用正则验证
    wIndow 强制关闭被占用的端口
  • 原文地址:https://www.cnblogs.com/JBLi/p/11462815.html
Copyright © 2020-2023  润新知