
实际 *** 作举例:某数据中有一表叫”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层文件了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)