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

  1. 首先:最好把实体类里面的变量名称和表里面字段写成一致。

  2. 然后:在SqlMapConfig.xml中
    <typeAliases>
    <typeAlias alias="game" type="实体类路径"/>
    </typeAliases>
    这就是把你的实体类写了个别名

  3. 最后:在写查询添加的时候:
    <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 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网