spring boot 中如何根据id查询数据库表

spring boot 中如何根据id查询数据库表,第1张

sql server 查询一个表的所有信息:查询语法为:select * from 表名 语法中的”*“代表所有。

实际 *** 作举例:某数据中有一表叫”user_user“,表中存储了一些用户信息;

1、查询”user_user“表中所有人员信息且所有字段,sql语句:select * from user_user

2、查询”user_use“表中所有人员信息且部分字段。sql语句:select user_show_id,user_name,pinyin,password from user_user

3、条件查询”user_user“表,以user_name为查询条件查询所有信息。sql语句:select * from user_user where user_name='李丹'

4、模糊查询”user_user“表,以user_name为模糊查询条件查询所有信息。sql语句:select * from user_user where user_name like '%张%'

1,在注入时初始化这两个模板。

/**

* 注入数据源, 该数据源在Spring配置文件中配置

* 在注入时初始化这两个模板

* @param dataSource

* Method create author: yanwei

* Method create dateTime: 2011-11-2 下午03:43:13

* Method update author:

* Method update dateTime:

*/

@Resource

public void setDataSource(DataSource dataSource) {

this.dataSource = dataSource

jdbcTemplate = new JdbcTemplate(dataSource)

simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource)

}

2,获取表结构信息。

1 /**

2 * 获取表结构信息

3 * @param tableName 表名

4 * @return

5 * @throws Exception

6 * Method create author: yanwei

7 * Method create dateTime: 2011-12-21 下午01:01:17

8 * Method update author:

9 * Method update dateTime:

10 */

11 public List<DsClientColumnInfo>getDsTableColumnInfo(String tableName) throws DataAccessFailureException{

12

13 ResultSet resultSet = null

14 Connection connection = null

15 java.util.List<DsClientColumnInfo>clientTableInfos = new ArrayList<DsClientColumnInfo>()

16 try {

17 connection = this.jdbcTemplate.getDataSource().getConnection()

18 //获得列的信息

19 resultSet = connection.getMetaData().getColumns(null, null, tableName, null)

20 while (resultSet.next()) {

21 //获得字段名称

22 String name = resultSet.getString("COLUMN_NAME")

23 //获得字段类型名称

24 String type = resultSet.getString("TYPE_NAME")

25 //获得字段大小

26 int size = resultSet.getInt("COLUMN_SIZE")

27 //获得字段备注

28 String remark = resultSet.getString("REMARKS")

29 DsClientColumnInfo info = new DsClientColumnInfo(null, null, null, name, remark, size, type, "false")

30 clientTableInfos.add(info)

31 }

32

33 //获得主键的信息

34 resultSet = connection.getMetaData().getPrimaryKeys(null, null, tableName)

35 while(resultSet.next()){

36 String primaryKey = resultSet.getString("COLUMN_NAME")

37 //设置是否为主键

38 for (DsClientColumnInfo dsClientColumnInfo : clientTableInfos) {

39 if(primaryKey != null &&primaryKey.equals(dsClientColumnInfo.getClientColumnCode()))

40 dsClientColumnInfo.setIsParmaryKey("true")

41 else

42 dsClientColumnInfo.setIsParmaryKey("false")

43 }

44 }

45

46 //获得外键信息

47 resultSet = connection.getMetaData().getImportedKeys(null, null, tableName)

48 while(resultSet.next()){

49 String exportedKey = resultSet.getString("FKCOLUMN_NAME")

50 //设置是否是外键

51 for (DsClientColumnInfo dsClientColumnInfo : clientTableInfos) {

52 if(exportedKey != null &&exportedKey.equals(dsClientColumnInfo.getClientColumnCode()))

53 dsClientColumnInfo.setIsImportedKey("true")

54 else

55 dsClientColumnInfo.setIsImportedKey("false")

56 }

57 }

58

59

60 } catch (Exception e) {

61 e.printStackTrace()

62 throw new RuntimeException("获取字段信息的时候失败,请将问题反映到维护人员。" + e.getMessage(), e)

63 } finally{

64 if(resultSet != null)

65 try {

66 resultSet.close()

67 } catch (SQLException e) {

68 e.printStackTrace()

69throw new DataAccessFailureException("关闭结果集resultSet失败。",e)

70 }finally{

71 if(connection != null)

72 try {

73 connection.close()

74 } catch (SQLException e) {

75 e.printStackTrace()

76throw new DataAccessFailureException("关闭连接connection失败。",e)

77 }

78 }

79 }

80

81 Set set = new HashSet()

82 set.addAll(clientTableInfos)

83 clientTableInfos.clear()

84 clientTableInfos.addAll(set)

85 return clientTableInfos

86 }

3,获得数据库中所有的表。

1 /**

2 * 获得数据库中所有的表

3 * @return

4 * Method create author: yanwei

5 * Method create dateTime: 2012-1-5 上午11:23:54

6 * Method update author:

7 * Method update dateTime:

8 * @throws SQLException

9 */

10 public Map<String, String>getDatabaseTables() throws DataAccessFailureException{

11 ResultSet resultSet = null

12 Connection connection = null

13 Map<String, String>map = new HashMap<String, String>()

14 try {

15 String[] types = {"TABLE"}

16 connection = this.jdbcTemplate.getDataSource().getConnection()

17 String databaseName = SynXmlAnalysis.getElementValueByName(DATABASE_NAME)

18 resultSet = connection.getMetaData().getTables(null, databaseName, null, types)

19 while(resultSet.next()){

20 String tableName = resultSet.getString("TABLE_NAME")

21 String remark = resultSet.getString("REMARKS")

22 map.put(tableName, remark)

23 }

24 } catch (SQLException e) {

25 e.printStackTrace()

26 throw new DataAccessFailureException(e)

27 }catch (Exception e) {

28 e.printStackTrace()

29 }finally{

30 if(resultSet != null)

31 try {

32 resultSet.close()

33 } catch (SQLException e) {

34 e.printStackTrace()

35throw new DataAccessFailureException("关闭结果集resultSet失败。",e)

36 }finally{

37 if(connection != null)

38 try {

39 connection.close()

40 } catch (SQLException e) {

41 e.printStackTrace()

42throw new DataAccessFailureException("关闭连接connection失败。",e)

43 }

44 }

45

46 }

47 return map

48 }

首先spring整合mybatis在(一)中说过,那么下面说一下如何自动生成dao、pojo、mapperxml文件

第一步、在pom.xml中增加一个插件,意义在于手动执行maven的 *** 作:

<plugin>

<groupId>org.mybatis.generator</groupId>

<artifactId>mybatis-generator-maven-plugin</artifactId>

<version>1.3.2</version>

<configuration>

<!-- 自动生成文件配置文件的地址 -->

<configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>

<verbose>true</verbose>

<overwrite>true</overwrite>

</configuration>

<executions>

<execution>

<id>Generate MyBatis Artifacts</id>

<goals>

<goal>generate</goal>

</goals>

</execution>

</executions>

<dependencies>

<dependency>

<groupId>org.mybatis.generator</groupId>

<artifactId>mybatis-generator-core</artifactId>

<version>1.3.2</version>

</dependency>

</dependencies>

</plugin>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

第二步,将自动生成dao及mapper文件的配置文件放在上述配置的目录下:

<?xml version="1.0" encoding="UTF-8"?>

<!--数据库连接驱动类,URL,用户名、密码 -->

<jdbcConnection driverClass="com.mysql.jdbc.Driver"

connectionURL="jdbc:mysql://ipXXX:3306/databaseXXX?characterEncoding=utf-8"

userId="root" password="rootXXX">

</jdbcConnection>

<javaTypeResolver>

<property name="forceBigDecimals" value="false"/>

</javaTypeResolver>

<!-- 生成(实体)模型的包名和位置-->

<javaModelGenerator targetPackage="com.zhy.pojo" targetProject="src/main/java">

<property name="enableSubPackages" value="true"/>

<property name="trimStrings" value="true"/>

</javaModelGenerator>

<!-- 生成XML映射文件的包名和位置-->

<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">

<property name="enableSubPackages" value="true"/>

</sqlMapGenerator>

<!-- 生成DAO接口的包名和位置-->

<javaClientGenerator type="XMLMAPPER" targetPackage="com.zhy.dao" targetProject="src/main/java">

<property name="enableSubPackages" value="true"/>

</javaClientGenerator>

<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->

<table tableName="t_user" domainObjectName="UserInfo" enableCountByExample="false"

enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"

selectByExampleQueryId="false"></table>

</context>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

这里有个小点需要注意,在maven工程基于“约定大于配置”的特点,java文件在src/main/java下,所以你需要将targetProject的值设为src/main/java,直接放在你的工程目录下,这样生成后不需要修改文件的引入地址。–~

第三步,就可以maven菜单里手动执行mybatis-generator生成dao层文件了。


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

原文地址:https://54852.com/sjk/9658807.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存