list实体类里面可以有list吗

list实体类里面可以有list吗,第1张

Java实体类:是指与数据库中相对应的表,成一一对应关系,实体类中的字段包括字段名和字段类型,往数据库中存的是字段值单个的。业务复杂的情况下,需要实体类中还要包含List<实体类>,举例来说,问题表中有问题Id,题目标题,题目类型,题目内容,关键点就在这里题目内容,题目内容中又包括题目编号、题目内容,前端返回的是List<实体类>,这个实体类就需要单独写一个(属性与属性值包括题目编号与题目内容)简单来说比如有单选、多选、判断题,出题的人肯定要写题目内容,比如选项1、选项2,等等,这些就是题目内容,题目内容与题号就是一个实体类,也就是实体类中又有实体类。前端传过来的数据是List 然而往数据库中存数据的时候不可能将list存入到数据库中,肯定要将list这个集合进行遍历,拿出其中的题题编号与题目内容,之后再存到数据库,存的时候也有些复杂,将两个数据内容拼接成一个字符串,[1@一年一度][2@一年三度]这就是根据[ @ 拼接成一个字符串存入到数据库中。当然有存就有取,a实体类:是指与数据库中相对应的表,成一一对应关系,实体类中的字段包括字段名和字段类型,往数据库中存的是字段值单个的。业务复杂的情况下,需要实体类中还要包含List<实体类>,举例来说,问题表中有问题Id,题目标题,题目类型,题目内容,关键点就在这里题目内容,题目内容中又包括题目编号、题目内容,前端返回的是List<实体类>,这个实体类就需要单独写一个(属性与属性值包括题目编号与题目内容)简单来说比如有单选、多选、判断题,出题的人肯定要写题目内容,比如选项1、选项2,等等,这些就是题目内容,题目内容与题号就是一个实体类,也就是实体类中又有实体类。前端传过来的数据是List 然而往数据库中存数据的时候不可能将list存入到数据库中,肯定要将list这个集合进行遍历,拿出其中的题题编号与题目内容,之后再存到数据库,存的时候也有些复杂,将两个数据内容拼接成一个字符串,[1@一年一度][2@一年三度]这就是根据[ @ 拼接成一个字符串存入到数据库中。当然有存就有取,到数据库中就要取数据了,取也就是查询数据,查询也分条件查询和通过id获取详情,先说通过id 查询,也就是要前端传过来id,重点是给前端返回数据的时候,将我们存到数据库中的字符串[1@一年一度][2@一年三度],要进行转化之后,字符串的分割,也就是要进行循环遍历,取出其中的题目编号和选项内容,存入List<实体类中>,将list返回给前端。接下来就是修改了,修改要将问题与问题内容显示在页面上,用户修改完毕后插入到数据库中,本质还是添加问题,前端修改完毕后,将数据传送过来,传过来的还是List<实体类>集合。还是需要和添加一样的 *** 作,继续将LIst进行循环遍历取出其中的值,之后进行字符串的拼接,存入到数据库中。接下来说的就是删除 *** 作,在数据量这么的时代中,有用的数据多之珍珠,但是没用的数据也多如沙子,数据的删除肯定要单个删除和批量删除都有,这个简单就需要sal语句控制,mybatis *** 作。

可以用QueryRunner的batch方法

public class Test {

private static final String DRIVER_CLASS_NAME = ""

private static final String JDBC_URL = ""

private static final String USER = ""

private static final String PASSWORD = ""

public static void main(String[] args) {

int count = 10// 插入记录的数目

Object[][] params = new Object[count][]

for (int i = 0i <counti++)

// 将每条记录的数据插入数组

params[i] = new Object[] { "", "", "" }

batch(params)

}

public static Connection getConnection() {

Connection conn = null

try {

Class.forName(DRIVER_CLASS_NAME)

conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD)

return conn

} catch (Exception e) {

return null

}

}

public static void batch(Object[][] params) {

QueryRunner queryRunner = new QueryRunner(true)

String sql = "INSERT INTO TABLE_NAME VALUES (?,?,?)"

try {

queryRunner.batch(getConnection(), sql, params)

} catch (SQLException e) {

e.printStackTrace()

}

}

}

参考代码及说明如下:

SqlConnection conn = new SqlConnection()

        conn.Open()

        SqlTransaction tran = conn.BeginTransaction()

        try

        {

            foreach()

            {

                string sql=""

                SqlCommand cmd=new SqlCommand(sql,conn,tran)

                SqlParameter[] pars=new SqlParameter[]{

                    new SqlParameter("",value),

                    ...

                }

                //cmd.Parameters的AddRange方法是增加一个参数的数组

                cmd.Parameters.AddRange(pars)

                //ExecuteNonQuery()是update,delete ,insert影响行数

                cmd.ExecuteNonQuery()                    

            }

            tran.Commit()

        }catch

        {

            tran.Rollback()

        }

        finally

        {

            conn.Close()

        }


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10650503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存