使用ssm框架+pgsql

笔者在实践ssm+pgsql的过程中遇到一些坑,特意作文,以免后人被坑。

1. 关于pgsql在框架中的使用,首先就是解决用工具自动生成mapper.xml和实体类,

 

   这张图片上的内容都能下载到,不做过多解释,主要还是 genertorConfig_mysql.xml文件的更改,

    

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration >
  
  <classPathEntry 
  location="postgresql.jar" />  
  
  <context id="jqtek" > 
      <commentGenerator>  
        <property name="suppressDate" value="false"/>  
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->  
            <property name="suppressAllComments" value="false"/>  
        </commentGenerator>  
  
     <jdbcConnection 
	driverClass="org.postgresql.Driver" 
	connectionURL="jdbc:postgresql://postgresql01.public.test.baozun.cn:5432/db_ehr"  
 	userId="user_ehr" password="user_ehr" />
	 <!-- mybatis里专门用来处理NUMERIC和DECIMAL类型的策略 -->    
        <javaTypeResolver>    
            <property name="forceBigDecimals" value="false"/>    
        </javaTypeResolver>
	
	
    <javaModelGenerator targetPackage="com.xx.entity" targetProject="MyGent\java">
    	<property name="trimStrings" value="true" />
    </javaModelGenerator>
    
    <sqlMapGenerator targetPackage="com.xx.mapping" targetProject="MyGent\resources">
    </sqlMapGenerator>
    
    <javaClientGenerator targetPackage="com.baozun.dao" targetProject="MyGent\java" type="XMLMAPPER">
    </javaClientGenerator>
	                              <!--  配置生成的实体类不需要辅助的examplateModel -->
	<table tableName="tb_user" enableCountByExample="false" enableUpdateByExample="false" 
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
			   <generatedKey column="id" sqlStatement="PostgreSql" identity="true" />
	</table>
	

  </context>
</generatorConfiguration>
****************************bat 批处理文件的书写(随便写的 txt文件,然后将后缀改成.bat)

del /f /q /s MyGent
java -jar mybatis-generator-core-1.3.1.jar -configfile generatorConfig_mysql.xml
pause

******************************************************************************************************

 2. 当生成了 mapper,xml文件时,由于pgsql和oracle一样,没有自增的主键,所以需要自己先在数据库去自定义一个自增的 序列

 CREATE TABLE "public"."tb_user" (
"id" int4 DEFAULT nextval('test_c_id_seq'::regclass) NOT NULL,
"user_name" varchar(25) COLLATE "default",
"user_password" varchar(25) COLLATE "default",
CONSTRAINT "tb_user_pkey" PRIMARY KEY ("id")
)
WITH (OIDS=FALSE)
;

  1. CREATE SEQUENCE test_c_id_seq 
  2. START WITH 1  
  3. INCREMENT BY 1  
  4. NO MINVALUE  
  5. NO MAXVALUE  
  6. CACHE 1;  
  7.   
  8. alter table tb_user alter column id set default nextval('test_c_id_seq'); 

 ****************************************************************************************

 具体在mapper.xml中写法就是 

<insert id="insert" parameterType="com.baozun.entity.TbUser" >
  <selectKey  resultType="java.lang.Integer" keyProperty="id" order="BEFORE" >
    SELECT nextval('test_c_id_seq')
  </selectKey>

  insert into tb_user (user_name, user_password)
  values (#{userName,jdbcType=VARCHAR}, #{userPassword,jdbcType=VARCHAR})
</insert>

*******************************************************************************************************

 关于mybatis的分页插件的使用

先在pom.xml中 引入jar包

 <pagehelper.version>3.4.2</pagehelper.version>
<mybatis.paginator.version>1.2.15</mybatis.paginator.version>
<dependency>
<groupId>com.github.miemiedev</groupId>
<artifactId>mybatis-paginator</artifactId>
<version>${mybatis.paginator.version}</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>${pagehelper.version}</version>
</dependency>
***********************
在mybatis-config.xml中配置分页插件,
<!-- 配置分页插件 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 设置数据库类型Oracle,MySQL,MarinDBName,SQLite,PostareSQL六种数据库 -->
<property name="dialect" value="postgresql"/>
</plugin>
</plugins>

具体使用就是在 controller 或者其他,

PageHelper.startPage(item.getPageIndex(),item.getPageSize());
List<TbUser> userList = userService.getUserList();
PageInfo<TbUser> pageInfo=new PageInfo<TbUser>(userList);

*******************************************************************************************************

对于 springMVC中的@RequestBody,前端如果是 使用的 ajax传值,那么是一定要写消息头,而且一定要将

传入的数据和 声明的一定要保持一致,

function displayModule(){
    $("#dislist").show();
    var params = {"pageSize":3,"pageIndex":1,"orgsId":"2"};
    $.ajax({
        type:"POST",
        url:"/User/userlistByAjax",
        contentType:"application/json",
        dataType:"json",
        data:JSON.stringify(params),
        success:function(data){
            var flag=data.flag;
            var msg=data.msg;
            if(flag==true){
                var itemList=data.object;
                $.each(itemList,function(i,item){
                    $("#hidenTd").append(
                        '<tr>' +
                        '<td>'+item.id+'</td>' +
                        '<td>' +item.userName+'</td>' +
                        '<td><a href="/User/'+item.id+'/delete" >删除</a></td>' +
                        '<td><a href="/User/'+item.id +'/detail">详细</a></td>' +
                        ' </tr>' ) ;
                });
            }else{
                alert(msg);
            }
            alert("成功");
        },
        error:function(e) {
            alert("出错:"+e);
        }
    });
}

我在前台接受可以直接使用 内部静态类  @RequestBody  UserService.GetUserAndOrgsInfo  item

public interface UserService{
    List<Map> selectMap(Map map);
    static class GetUserAndOrgsInfo extends RequestBase{
        public int orgsId;
    }
}

***********内部静态类的属性必须和传入的键值保持一致,

 *******************************************************************************************************

使用mybatis时,实现复杂查询,那么就是 传入是Map ,传出是List<Map>

dao层:  List<Map> selectByName(Map map);
 .xml层 : <select id="selectByName" parameterType="java.util.HashMap" resultType="java.util.HashMap">
     SELECT * from
       tb_user a
    where  a.user_name=#{mapName}
  </select>

controller使用:  Map map=new HashMap();
map.put("mapName","名字1");

************************************************************************************


SSM框架(Spring+SpringMVC+MyBatis)是一种常用的Java企业级框架,它能够将各层模块进行解耦,并使用注入和依赖注入等技术实现松耦合的开发。 RESTful是一种软件架构风格,它通过基于HTTP的标准请求方法(GET、POST、PUT、DELETE等)来进行资源的增删改查操作。它具有简洁、易于理解和扩展性好的特点。 Spring Boot是一种基于Spring框架的快速开发框架,它封装了很多开发常用的依赖和配置,极大地简化了Spring应用的配置过程。 而在利用Idea开发SSM框架的RESTful风格的Spring Boot项目时,可以按照以下步骤进行: 1. 首先,创建一个空的Spring Boot项目,可以在Idea中使用Spring Initializer快速生成。 2. 在pom.xml文件中添加所依赖的SSM框架连接数据库的相关依赖以及其他需要的依赖。 3. 在src/main/java目录下创建主启动类,并添加相关注解,如@SpringBootApplication等。同时,创建并配置application.properties或application.yml文件来设置项目的相关配置信息。 4. 创建用于处理网页请求的Controller、用于数据传输的DTO类、实体类等。 5. 利用MyBatis创建DAO和Mapper接口,同时编写相应的Mapper.xml文件,使用注解或者XML方式配置SQL语句。 6. 创建Service层的接口和实现类,用于进行业务处理,并调用DAO层的方法来访问数据。 7. 在Controller层进行相关URL的映射和请求处理,实现RESTful风格的API接口,并调用Service层的方法。 8. 对项目进行测试和调试,可以使用Postman等工具进行接口的测试,验证项目的正确性。 总的来说,利用SSM框架和RESTful风格的开发,结合Spring Boot和Idea等工具,可以快速搭建和开发Java项目,提高开发效率和可维护性。同时,也能为项目提供稳定的运行环境和良好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值