Mybatis系列笔记十——Mybatis Generator 工具的使用

Mybatis Generator 工具的使用

MyBatis Generator(MBG)是 MyBatis 官方提供的代码生成工具。MyBatis Generator工具可以根据数据库的表结构自动的帮助我们生成模型、接口与映射配置文件,它可以极大地 减少我们对代码的编写,提高开发效率

generatorConfig.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> 
	<context id="testTables" targetRuntime="MyBatis3"> 
		<commentGenerator> 
			<!-- 是否去除自动生成的注释 true:是 : false:否 --> 	
			<property name="suppressAllComments" value="true" /> 
		</commentGenerator> 
		
		<!--数据库连接的信息:驱动类、连接地址、用户名、密码 --> 
		<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/lanh" userId="root" password="123456"> 
		</jdbcConnection> 
		
		<!-- 默认 false,把 JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为true 时把 JDBC DECIMAL 和 NUMERIC 类型解析为 java.math.BigDecimal --> 
		<javaTypeResolver> 
			<property name="forceBigDecimals" value="false" /> 
		</javaTypeResolver> 
		
		<!-- targetProject:生成 POJO 类的位置 --> 
		<javaModelGenerator targetPackage="com.lanh.pojo" targetProject=".\src"> 
			<!-- enableSubPackages:是否让 schema 作为包的后缀 --> 
			<property name="enableSubPackages" value="false" /> 
			<!-- 从数据库返回的值被清理前后的空格 --> 
			<property name="trimStrings" value="true" /> 
		</javaModelGenerator> 
		
		<!-- targetProject:mapper 映射文件生成的位置 --> 
		<sqlMapGenerator targetPackage="com.lanh.mapper" targetProject=".\src"> 
			<!-- enableSubPackages:是否让 schema 作为包的后缀 --> 
			<property name="enableSubPackages" value="false" /> 
		</sqlMapGenerator> 
		
		<!-- targetPackage:mapper 接口生成的位置 --> 
		<javaClientGenerator type="XMLMAPPER" targetPackage="com.lanh.mapper" targetProject=".\src"> 
			<!-- enableSubPackages:是否让 schema 作为包的后缀 --> 
			<property name="enableSubPackages" value="false" /> 
		</javaClientGenerator> 
		
		<!-- 指定数据库表 --> 
		<table schema="" tableName="users"/>
	</context> 
</generatorConfiguration>

运行主方法生成 POJO、接口与映射配置文件

public class GeneratorSqlmap { 
	public void generator() throws Exception{ 
		List<String> warnings = new ArrayList<String>(); 
		boolean overwrite = true; 
		//指定 逆向工程配置文件 
		File configFile = new File("generatorConfig.xml"); 
		ConfigurationParser cp = new ConfigurationParser(warnings); 
		Configuration config = cp.parseConfiguration(configFile); 
		DefaultShellCallback callback = new DefaultShellCallback(overwrite); 
		MyBatisGenerator myBatisGenerator = new 
		MyBatisGenerator(config, callback, warnings); 
		myBatisGenerator.generate(null); 
	}
	
	public static void main(String[] args) throws Exception {
		try { 
			GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap(); 
			generatorSqlmap.generator(); 
		} catch (Exception e) { 
			e.printStackTrace(); 
		} 
	} 
}

生成代码的结构介绍

模型类

Users 实体类。

Example 类

UsersExample 类封装了针对于 Users 实体类中所用属性的条件定义。它的作用是通过基于面向对象语法结构来给定操作数据库的条件

UsersMapper 接口

定义了对数据库 CRUD 操作的抽象方法。

映射配置文件

UsersMapper 接口的映射配置文件。

生成代码的使用

根据主键查询用户

public class SelectUsersByIdTest { 
	public static void main(String[] args) { 
		SqlSession sqlSession = MybatisUtils.getSqlSession(); 
		UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class); 
		Users users = usersMapper.selectByPrimaryKey(1); 
		System.out.println(users); 
	} 
}

多条件查询 and

public class SelectUsersByNameAndSexTest { 
	public static void main(String[] args) { 
		SqlSession sqlSession = MybatisUtils.getSqlSession();
		UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class); 
		UsersExample usersExample = new UsersExample(); 
		UsersExample.Criteria criteria = usersExample.createCriteria(); 
		criteria.andUsernameEqualTo("lanh"); 
		criteria.andUsersexEqualTo("male"); 
		List<Users> list = usersMapper.selectByExample(usersExample); 
		list.forEach(System.out::println); 
	} 
}

多条件查询 or

public class SelectUsersByNameOrSexTest { 
	public static void main(String[] args) { 
		SqlSession sqlSession = MybatisUtils.getSqlSession(); 
		UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class); 
		UsersExample usersExample = new UsersExample(); 
		UsersExample.Criteria criteria = usersExample.createCriteria(); 
		criteria.andUsernameEqualTo("lanh"); 
		UsersExample.Criteria criteria1 = usersExample.createCriteria(); 
		criteria1.andUsersexEqualTo("male"); 
		usersExample.or(criteria1); 
		List<Users> list = usersMapper.selectByExample(usersExample); 
		list.forEach(System.out::println); 
	} 
}

添加用户

public class InsertUsersTest { 
	public static void main(String[] args) { 
		SqlSession sqlSession = MybatisUtils.getSqlSession(); 
		UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class); 
		Users users = new Users(); 
		users.setUsername("kevin"); 
		users.setUsersex("male"); 
		usersMapper.insertSelective(users); 
		sqlSession.commit(); 
	} 
}

更新用户

public class UpdateUsersTest { 
	public static void main(String[] args) { 
		SqlSession sqlSession = MybatisUtils.getSqlSession(); 
		UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class); 
		Users users = new Users(); 
		users.setUsername("zhangsanfeng"); 
		users.setUsersex("male"); 
		users.setUserid(25); 
		usersMapper.updateByPrimaryKey(users); 
		sqlSession.commit(); 
	} 
}

删除用户

public class DeleteUsersByIdTest { 
	public static void main(String[] args) { 
		SqlSession sqlSession = MybatisUtils.getSqlSession(); 
		UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class); 
		usersMapper.deleteByPrimaryKey(25); 
		sqlSession.commit(); 
	} 
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绿豆蛙给生活加点甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值