mybatis 中如何映射实体类和表名 spring mybatis 需要数据库对应的实体类吗
\u4e00\u4e2a\u5b9e\u4f53\u7c7b\u4e2d\u6709\u4e00\u4e2a\u590d\u6742\u7684\u7c7b\u5c5e\u6027\u3002\u7528mybatis\u5982\u4f55\u5c06\u8fd9\u4e2a\u5c5e\u6027\u6620\u5c04\u5230mysql\u8868\u4e2d\uff1f\u4f60\u597d\uff0c\u5f88\u9ad8\u5174\u56de\u7b54\u4f60\u95ee\u9898\u3002
\u53ef\u4ee5\u5c06\u4f60\u8bf4\u7684\u8fd9\u4e2a\u5c5e\u6027\u5e8f\u5217\u5316\u540e\u5b58\u50a8\u5230\u8868\u7684\u4e00\u4e2a\u5b57\u6bb5\u4e2d\u3002\u8bfb\u53d6\u65f6\u518d\u505a\u53cd\u5e8f\u5217\u5316\u3002
\u6bd4\u5982\u901a\u8fc7json\u683c\u5f0f\u3002
\u5982\u679c\u6709\u5e2e\u52a9\u5230\u4f60\uff0c\u8bf7\u70b9\u51fb\u91c7\u7eb3\u3002
\u5728\u5e73\u65f6\u7684\u5f00\u53d1\u4e2d\uff0c\u6211\u4eec\u8868\u4e2d\u7684\u5b57\u6bb5\u540d\u548c\u8868\u5bf9\u5e94\u5b9e\u4f53\u7c7b\u7684\u5c5e\u6027\u540d\u79f0\u4e0d\u4e00\u5b9a\u90fd\u662f\u5b8c\u5168\u76f8\u540c\u7684\uff0c\u4e0b\u9762\u6765\u6f14\u793a\u4e00\u4e0b\u8fd9\u79cd\u60c5\u51b5\u4e0b\u7684\u5982\u4f55\u89e3\u51b3\u5b57\u6bb5\u540d\u4e0e\u5b9e\u4f53\u7c7b\u5c5e\u6027\u540d\u4e0d\u76f8\u540c\u7684\u51b2\u7a81\u3002
\u4e00\u3001\u51c6\u5907\u6f14\u793a\u9700\u8981\u4f7f\u7528\u7684\u8868\u548c\u6570\u636e
CREATE TABLE orders(
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_no VARCHAR(20),
order_price FLOAT
);
INSERT INTO orders(order_no, order_price) VALUES('aaaa', 23);
INSERT INTO orders(order_no, order_price) VALUES('bbbb', 33);
INSERT INTO orders(order_no, order_price) VALUES('cccc', 22);12345678
\u4e8c\u3001\u5b9a\u4e49\u5b9e\u4f53\u7c7b
package me.gacl.domain;
/**
* @author gacl
* \u5b9a\u4e49orders\u8868\u5bf9\u5e94\u7684\u5b9e\u4f53\u7c7b
*/
public class Order {
/**
*
CREATE TABLE orders(
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_no VARCHAR(20),
order_price FLOAT
);
*/
//Order\u5b9e\u4f53\u7c7b\u4e2d\u5c5e\u6027\u540d\u548corders\u8868\u4e2d\u7684\u5b57\u6bb5\u540d\u662f\u4e0d\u4e00\u6837\u7684
private int id; //id===>order_id
private String orderNo; //orderNo===>order_no
private float price; //price===>order_price
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
@Override
public String toString() {
return "Order [id=" + id + ", orderNo=" + orderNo + ", price=" + price+ "]";
}
}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
\u4e09\u3001\u7f16\u5199\u6d4b\u8bd5\u4ee3\u7801
3.1\u3001\u7f16\u5199SQL\u7684xml\u6620\u5c04\u6587\u4ef6
1\u3001\u521b\u5efa\u4e00\u4e2aorderMapper.xml\u6587\u4ef6\uff0corderMapper.xml\u7684\u5185\u5bb9\u5982\u4e0b\uff1a
<!-- \u4e3a\u8fd9\u4e2amapper\u6307\u5b9a\u4e00\u4e2a\u552f\u4e00\u7684namespace\uff0cnamespace\u7684\u503c\u4e60\u60ef\u4e0a\u8bbe\u7f6e\u6210\u5305\u540d+sql\u6620\u5c04\u6587\u4ef6\u540d\uff0c\u8fd9\u6837\u5c31\u80fd\u591f\u4fdd\u8bc1namespace\u7684\u503c\u662f\u552f\u4e00\u7684
\u4f8b\u5982namespace="me.gacl.mapping.orderMapper"\u5c31\u662fme.gacl.mapping(\u5305\u540d)+orderMapper(orderMapper.xml\u6587\u4ef6\u53bb\u9664\u540e\u7f00)
-->
<!--
\u6839\u636eid\u67e5\u8be2\u5f97\u5230\u4e00\u4e2aorder\u5bf9\u8c61\uff0c\u4f7f\u7528\u8fd9\u4e2a\u67e5\u8be2\u662f\u67e5\u8be2\u4e0d\u5230\u6211\u4eec\u60f3\u8981\u7684\u7ed3\u679c\u7684\uff0c
\u8fd9\u4e3b\u8981\u662f\u56e0\u4e3a\u5b9e\u4f53\u7c7b\u7684\u5c5e\u6027\u540d\u548c\u6570\u636e\u5e93\u7684\u5b57\u6bb5\u540d\u5bf9\u5e94\u4e0d\u4e0a\u7684\u539f\u56e0\uff0c\u56e0\u6b64\u65e0\u6cd5\u67e5\u8be2\u51fa\u5bf9\u5e94\u7684\u8bb0\u5f55
-->
<select id="getOrderById" parameterType="int"
resultType="me.gacl.domain.Order">
select * from orders where order_id=#{id}
<!--
\u6839\u636eid\u67e5\u8be2\u5f97\u5230\u4e00\u4e2aorder\u5bf9\u8c61\uff0c\u4f7f\u7528\u8fd9\u4e2a\u67e5\u8be2\u662f\u53ef\u4ee5\u6b63\u5e38\u67e5\u8be2\u5230\u6211\u4eec\u60f3\u8981\u7684\u7ed3\u679c\u7684\uff0c
\u8fd9\u662f\u56e0\u4e3a\u6211\u4eec\u5c06\u67e5\u8be2\u7684\u5b57\u6bb5\u540d\u90fd\u8d77\u4e00\u4e2a\u548c\u5b9e\u4f53\u7c7b\u5c5e\u6027\u540d\u76f8\u540c\u7684\u522b\u540d\uff0c\u8fd9\u6837\u5b9e\u4f53\u7c7b\u7684\u5c5e\u6027\u540d\u548c\u67e5\u8be2\u7ed3\u679c\u4e2d\u7684\u5b57\u6bb5\u540d\u5c31\u53ef\u4ee5\u4e00\u4e00\u5bf9\u5e94\u4e0a
-->
<select id="selectOrder" parameterType="int"
resultType="me.gacl.domain.Order">
select order_id id, order_no orderNo,order_price price from orders where order_id=#{id}
<!--
\u6839\u636eid\u67e5\u8be2\u5f97\u5230\u4e00\u4e2aorder\u5bf9\u8c61\uff0c\u4f7f\u7528\u8fd9\u4e2a\u67e5\u8be2\u662f\u53ef\u4ee5\u6b63\u5e38\u67e5\u8be2\u5230\u6211\u4eec\u60f3\u8981\u7684\u7ed3\u679c\u7684\uff0c
\u8fd9\u662f\u56e0\u4e3a\u6211\u4eec\u901a\u8fc7\u6620\u5c04\u5b9e\u4f53\u7c7b\u5c5e\u6027\u540d\u548c\u8868\u7684\u5b57\u6bb5\u540d\u4e00\u4e00\u5bf9\u5e94\u5173\u7cfb -->
select * from orders where order_id=#{id}
\u6620\u5c04\u5b9e\u4f53\u7c7b\u5c5e\u6027\u540d\u548c\u8868\u7684\u5b57\u6bb5\u540d\u5bf9\u5e94\u5173\u7cfb -->
1234567891011121314151617181920212223242526272829303132333435363738394041
2\u3001\u5728conf.xml\u6587\u4ef6\u4e2d\u6ce8\u518corderMapper.xml\u6620\u5c04\u6587\u4ef6
<!-- \u6ce8\u518corderMapper.xml\u6587\u4ef6\uff0c
orderMapper.xml\u4f4d\u4e8eme.gacl.mapping\u8fd9\u4e2a\u5305\u4e0b\uff0c\u6240\u4ee5resource\u5199\u6210me/gacl/mapping/orderMapper.xml-->
12345
3.2\u3001\u7f16\u5199\u5355\u5143\u6d4b\u8bd5\u4ee3\u7801
package me.gacl.test;
import me.gacl.domain.Order;
import me.gacl.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class Test2 {
@Test
public void testGetOrderById(){
SqlSession sqlSession = MyBatisUtil.getSqlSession();
/**
* \u6620\u5c04sql\u7684\u6807\u8bc6\u5b57\u7b26\u4e32\uff0c
* me.gacl.mapping.orderMapper\u662forderMapper.xml\u6587\u4ef6\u4e2dmapper\u6807\u7b7e\u7684namespace\u5c5e\u6027\u7684\u503c\uff0c
* getOrderById\u662fselect\u6807\u7b7e\u7684id\u5c5e\u6027\u503c\uff0c\u901a\u8fc7select\u6807\u7b7e\u7684id\u5c5e\u6027\u503c\u5c31\u53ef\u4ee5\u627e\u5230\u8981\u6267\u884c\u7684SQL
*/
String statement = "me.gacl.mapping.orderMapper.getOrderById";//\u6620\u5c04sql\u7684\u6807\u8bc6\u5b57\u7b26\u4e32
//\u6267\u884c\u67e5\u8be2\u64cd\u4f5c\uff0c\u5c06\u67e5\u8be2\u7ed3\u679c\u81ea\u52a8\u5c01\u88c5\u6210Order\u5bf9\u8c61\u8fd4\u56de
Order order = sqlSession.selectOne(statement,1);//\u67e5\u8be2orders\u8868\u4e2did\u4e3a1\u7684\u8bb0\u5f55
//\u4f7f\u7528SqlSession\u6267\u884c\u5b8cSQL\u4e4b\u540e\u9700\u8981\u5173\u95edSqlSession
sqlSession.close();
System.out.println(order);//\u6253\u5370\u7ed3\u679c\uff1anull\uff0c\u4e5f\u5c31\u662f\u6ca1\u6709\u67e5\u8be2\u51fa\u76f8\u5e94\u7684\u8bb0\u5f55
}
@Test
public void testGetOrderById2(){
SqlSession sqlSession = MyBatisUtil.getSqlSession();
/**
* \u6620\u5c04sql\u7684\u6807\u8bc6\u5b57\u7b26\u4e32\uff0c
* me.gacl.mapping.orderMapper\u662forderMapper.xml\u6587\u4ef6\u4e2dmapper\u6807\u7b7e\u7684namespace\u5c5e\u6027\u7684\u503c\uff0c
* selectOrder\u662fselect\u6807\u7b7e\u7684id\u5c5e\u6027\u503c\uff0c\u901a\u8fc7select\u6807\u7b7e\u7684id\u5c5e\u6027\u503c\u5c31\u53ef\u4ee5\u627e\u5230\u8981\u6267\u884c\u7684SQL
*/
String statement = "me.gacl.mapping.orderMapper.selectOrder";//\u6620\u5c04sql\u7684\u6807\u8bc6\u5b57\u7b26\u4e32
//\u6267\u884c\u67e5\u8be2\u64cd\u4f5c\uff0c\u5c06\u67e5\u8be2\u7ed3\u679c\u81ea\u52a8\u5c01\u88c5\u6210Order\u5bf9\u8c61\u8fd4\u56de
Order order = sqlSession.selectOne(statement,1);//\u67e5\u8be2orders\u8868\u4e2did\u4e3a1\u7684\u8bb0\u5f55
//\u4f7f\u7528SqlSession\u6267\u884c\u5b8cSQL\u4e4b\u540e\u9700\u8981\u5173\u95edSqlSession
sqlSession.close();
System.out.println(order);//\u6253\u5370\u7ed3\u679c\uff1aOrder [id=1, orderNo=aaaa, price=23.0]
}
@Test
public void testGetOrderById3(){
SqlSession sqlSession = MyBatisUtil.getSqlSession();
/**
* \u6620\u5c04sql\u7684\u6807\u8bc6\u5b57\u7b26\u4e32\uff0c
* me.gacl.mapping.orderMapper\u662forderMapper.xml\u6587\u4ef6\u4e2dmapper\u6807\u7b7e\u7684namespace\u5c5e\u6027\u7684\u503c\uff0c
* selectOrderResultMap\u662fselect\u6807\u7b7e\u7684id\u5c5e\u6027\u503c\uff0c\u901a\u8fc7select\u6807\u7b7e\u7684id\u5c5e\u6027\u503c\u5c31\u53ef\u4ee5\u627e\u5230\u8981\u6267\u884c\u7684SQL
*/
String statement = "me.gacl.mapping.orderMapper.selectOrderResultMap";//\u6620\u5c04sql\u7684\u6807\u8bc6\u5b57\u7b26\u4e32
//\u6267\u884c\u67e5\u8be2\u64cd\u4f5c\uff0c\u5c06\u67e5\u8be2\u7ed3\u679c\u81ea\u52a8\u5c01\u88c5\u6210Order\u5bf9\u8c61\u8fd4\u56de
Order order = sqlSession.selectOne(statement,1);//\u67e5\u8be2orders\u8868\u4e2did\u4e3a1\u7684\u8bb0\u5f55
//\u4f7f\u7528SqlSession\u6267\u884c\u5b8cSQL\u4e4b\u540e\u9700\u8981\u5173\u95edSqlSession
sqlSession.close();
System.out.println(order);//\u6253\u5370\u7ed3\u679c\uff1aOrder [id=1, orderNo=aaaa, price=23.0]
}
}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
\u6267\u884c\u5355\u5143\u6d4b\u8bd5\u7684\u7ed3\u679c\uff1a
\u3000\u30001\u3001testGetOrderById\u65b9\u6cd5\u6267\u884c\u67e5\u8be2\u540e\u8fd4\u56de\u4e00\u4e2anull\u3002
\u3000\u30002\u3001testGetOrderById2\u65b9\u6cd5\u548ctestGetOrderById3\u65b9\u6cd5\u6267\u884c\u67e5\u8be2\u540e\u53ef\u4ee5\u6b63\u5e38\u5f97\u5230\u60f3\u8981\u7684\u7ed3\u679c\u3002
首先:最好把实体类里面的变量名称和表里面字段写成一致。
然后:在SqlMapConfig.xml中
<typeAliases>
<typeAlias alias="game" type="实体类路径"/>
</typeAliases>
这就是把你的实体类写了个别名最后:在写查询添加的时候:
<select id="gameDao" resultType="game">返回实体类对象
select * from tb_game
</select>
这样查出的结果就对应上数据了。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="game"> // namespace 可以随便定义
<typeAlias alias="game" type="../Game"/> // alias 可以随便定义 type 是你实体类Game的路径
<sql id="sql_list">
<![CDATA[
select * from tb_game // 这个地方是查询数据库,所以只能用表名,不能是实体类Game
]]>
</sql>
<select id="accountlist" resultClass="game"> // id 随便定义,resultClass是 你的实体类,具体是你 typeAlias 中定义的
<include refid="sql_list"/>
</select>
</sqlMap>
首先:你最好把你的实体类里面的变量名称和你的表里面字段写成一致。
然后:在SqlMapConfig.xml中
<typeAliases>
<typeAlias alias="game" type="实体类路径"/>
</typeAliases>
这就是把你的实体类写了个别名
最后:在你写查询添加的时候:
<select id="gameDao" resultType="game">返回你的实体类对象
select * from tb_game
</select>
这样查出的结果就对应上你的数据了。
import java.awt.*; import java.awt.event.*; import javax.swing.*; super("ATM柜员机"); Container container=getContentPane(); buttons=new
使用代码生成器的方式。也有使用注解的方式,一看大体你就明白了。
@Test
public void AutoCreate(){
String path="D://java_base/Errands";
AutoGenerator mpg = new AutoGenerator();
//MyBatis-Plus 全局策略配置
GlobalConfig gc = new GlobalConfig();
//生成文件的输出目录【默认 D 盘根目录】
gc.setOutputDir(path+"/src/main/java");
//是否覆盖已有文件
gc.setFileOverride(false);
//开启 ActiveRecord 模式
gc.setActiveRecord(true);
//是否在xml中添加二级缓存配置
gc.setEnableCache(true);
//开启 BaseResultMap
gc.setBaseResultMap(true);
//开启 baseColumnList
gc.setBaseColumnList(true);
// 开发人员
gc.setAuthor("XXX");
// 自定义文件命名,注意 %s 会自动填充表实体属性!
gc.setMapperName("%sDao");
gc.setXmlName("%sMapper");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setControllerName("%sController");
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC");
dsc.setUsername("root");
dsc.setPassword("root");
mpg.setDataSource(dsc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setTablePrefix(new String[] { "t_m_", "t_p_", "t_s_", "t_r_", "t_c_"});// 此处可以修改为表的前缀
strategy.setNaming(NamingStrategy.no_change);// 表名生成策略
strategy.setInclude(new String[] {"te_test","userTest"}); // 需要生成的表
// strategy.setExclude(new String[]{"test"}); // 排除生成的表
// 公共父类
// strategy.setSuperControllerClass("com.common.bean.pageObject");
strategy.setSuperEntityClass("com.common.bean.pageObject");
mpg.setStrategy(strategy);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.errands");
// pc.setModuleName("member");
mpg.setPackageInfo(pc);
String templatePath = "/templates/mapper.xml.ftl";
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
// 自定义配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return path + "/src/main/resources/mapper/" + pc.getModuleName()
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
// 执行生成
mpg.execute();
}
扩展阅读:whatsapp messenger ... mybatis如何实现查询 ... mybatis plus 大于等于 ... mantis gamepad pro beta ... 对象关系映射 mybatis ... mybatisplus一对一怎么用 ... mybatis mapper注解 ... mybatis resultmap ... mantis mouse pro ...