ssm逆向工程

通过创建好的表来生成实体类和映射文件
源码案例在github上

最主要的是该配置文件,放在项目的一级目录下面

<?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 >

	<!--1.修改为自己的mysql连接jar包:绝对路径地址;-->,就是本地的jar位置
	<classPathEntry location="E:\\maven\\repository\\mysql\\mysql-connector-java\\5.1.40\\mysql-connector-java-5.1.40.jar"/>

	<context id="context1" >
		<commentGenerator  >
			<property name="javaFileEncoding" value="UTF-8"/>
			<property name="suppressAllComments" value="false" />
			<property name="suppressDate" value="true"/>
		</commentGenerator>
		<!--2.选择数据库的driverClass与connectionURL-->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
		connectionURL="jdbc:mysql://localhost:3306/gww?useUnicode=true&amp;useSSL=false&amp;characterEncoding=UTF-8" userId="root" password="123456" />

		<!--3.生成实体类 指定包名 以及生成的绝对地址 (可以自定义地址,但是路径不存在会自动创建 ) -->
		<javaModelGenerator targetPackage="com.sz.entity" targetProject="E:\projects\ssm\逆向工程\ssm_demo1\src\main\java" >
			<property name="enableSubPackages" value="true"/> <!-- 如果true,MBG会根据catalog和schema来生成子包。如果false就会直接用targetPackage属性。默认为false -->
			<property name="trimStrings" value="true" /> <!-- 当数据库字段使用CHAR时,建议在<javaModelGenerator>中设 -->
		</javaModelGenerator>

		<!--4.生成Mapper映射文件地 址 -->
		<sqlMapGenerator targetPackage="com.sz.mapper"  targetProject="E:\projects\ssm\逆向工程\ssm_demo1\src\main\resources" />

		<!--5.生成Mapper 的接口 可以配置 type="XMLMAPPER"生成xml的dao实现 -->
		<javaClientGenerator targetPackage="com.sz.mapper" targetProject="E:\projects\ssm\逆向工程\ssm_demo1\src\main\java" type="XMLMAPPER" />

		<!--6.配置哪些 表需要自动生成-->  想生成多个实体类,就需要写几个这样的标签,前提是数据库要有对应的表
		<table tableName="users" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true"
			   enableSelectByExample="true"   selectByExampleQueryId="true" />
                
	</context>
</generatorConfiguration>

配置了该文件后,需要配置一个maven配置,eid里面配置
mybatis-generator:generate -e,配置好后,启动就会自动生成实体类和映射文件

注意,这里的密码,用户名更applicationContext.xml是不冲突的

还需要自动生成代码的jar

<!--自动生成代码工具-->
<dependency>
  <groupId>org.mybatis.generator</groupId>
  <artifactId>mybatis-generator-core</artifactId>
  <version>1.3.2</version>
</dependency>
<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper</artifactId>
  <version>3.7.5</version>
</dependency> <!-- https://mvnrepository.com/artifact/com.github.jsqlparser/jsqlparser -->
<dependency>
  <groupId>com.github.jsqlparser</groupId>
  <artifactId>jsqlparser</artifactId>
  <version>1.1</version>
</dependency>





    <!--mybatis 代码自动生成工具-->插件
    <plugin>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-maven-plugin</artifactId>
      <version>1.3.2</version>
      <configuration>
        <configurationFile>generatorConfig.xml</configurationFile> 就是生成代码的核心文件
        <verbose>true</verbose>
        <overwrite>true</overwrite>
      </configuration>
      <dependencies>
      <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.3.2</version>
      </dependency>
    </dependencies>
    </plugin>
spring的配置文件中,加入分页的插件

<!--配置SqlSessionFactory工厂-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>

        <!--配置实体类映射文件-->
        <property name="mapperLocations" value="classpath*:com/sz/mapper/*.xml"></property>

        <!--别名-->
        <property name="typeAliasesPackage" value="com.sz.entity"></property>

        <!--配置分页插件-->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageHelper">
                    <property name="properties">
                        <value>
                            dialect=mysql
                        </value>
                    </property>
                </bean>
            </array>
        </property>

    </bean>

<!--10.配置接口包扫描路径; --> <!--就无需给mqpper注解了--> 这是另一种,也可以选择给mapper添加注解的方式
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.sz.mapper"></property>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>  

spring mvc没有改变,跟标准的一样

实体类生成后,会携带一个该类独有的实体Example类 ,该类是该实体类的条件类,是为了方便增删改查的条件处理
mapper接口对应着resources的映射文件,我们也可以自己再进行方法的扩展,

简单增删改查

     模糊查询,并且id在1015范围的
 @Override
    public List<Users> ByUsersName(String name) {
        UsersExample usersExample=new UsersExample();
        usersExample.createCriteria()
                .andNameLike("%"+name+"%")
                .andIdBetween(10,15);
       return usersMapper.selectByExample(usersExample);
    }


@Override
    public int update(Users users) {
        UsersExample usersExample=new UsersExample();
        usersExample.createCriteria()
                .andIdEqualTo(users.getId());
        return usersMapper.updateByExample(users, usersExample);
    }

 @Override
    public int delete(int id) {
        UsersExample usersExample=new UsersExample();
        usersExample.createCriteria()
                .andIdEqualTo(id);
        return usersMapper.deleteByExample(usersExample);
    }



 @Override
    public int save(Users users) {
//        return usersMapper.insert(users); //不会保存值为null的值
        return usersMapper.insertSelective(users);  //相反,带有Selective

    }


    @Override
    public List<Users> orderByUsers() {
        UsersExample usersExample=new UsersExample();
        usersExample.setOrderByClause("id desc"); //根据id 倒序
        System.out.println("是否去重:"+usersExample.isDistinct());//默认不去重
        return usersMapper.selectByExample(usersExample);
    }

使用条件的增删改查都是单表操作的,想要多表,需要自定义方法,然后映射到文件里

分页

自定义一个分页类
public class PageUtil<T> {
    private long total;   //总记录数
    private List<T> rows; //当前页的数据
    private int pageSize; //每页的记录数
    private int pageTotals; //总页数
    private int pageIndex; //当前页
生成全参和无参构造



使用
   @RequestMapping("/pageUsers/{id}/{row}")
    public List<Users> pageUsers(@PathVariable(name = "id") int id,@PathVariable(name = "row") int row){
        PageHelper.startPage(id, row);
        List<Users> users = userService.pageUsers();
        Page<Users> pages=(Page<Users>)users;
        PageUtil<Users> pageUtil= new PageUtil
                (pages.getTotal(),
                pages.getResult(),
                pages.getPageSize(),
                pages.getPages(),
                pages.getPageNum());
        return pages.getResult();
    }
id是第几页,row是一页的记录数,


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值