解决字段名与实体类属性名不相同的冲突
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.hous.day4.orderMapper"> <!-- 解决字段名与实体类属性名不相同的冲突 --> <!-- 方式一 通过在 sql 语句中定义别名--> <select id="getOrder" parameterType="int" resultType="_Order"> select order_id id, order_name orderName, order_price price from orders where order_id=#{id} </select> <!-- 方式二 通过<resultMap>映射--> <select id="getAllOrders" resultMap="orderResultMap"> select order_id, order_name, order_price from orders </select> <resultMap type="_Order" id="orderResultMap"> <id property="id" column="order_id"/> <result property="orderName" column="order_name"/> <result property="price" column="order_price"/> </resultMap> </mapper>
package com.hous.day4; import java.io.InputStream; import java.util.List; import java.util.Random; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import org.junit.Test; public class MyTest { private SqlSession session = null; @Before public void setUp() throws Exception { String resource = "day4/config.xml"; InputStream config = MyTest.class.getClassLoader().getResourceAsStream(resource); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); // openSession可以设置为true自动提交,false手工提交 session = factory.openSession(); } @Test public void testGetOrder() { String statement = "com.hous.day4.orderMapper.getOrder"; Order order = session.selectOne(statement, 2); System.out.println("查询单个用户" + order.toString()); session.commit(); session.close(); } @Test public void testGetAllOrders() { String statement = "com.hous.day4.orderMapper.getAllOrders"; List<Order> orders = session.selectList(statement); System.out.println("查询单个用户" + orders.toString()); session.commit(); session.close(); } }
create table orders( order_id int(6) primary key auto_increment, order_name varchar(200), order_price float ); insert into orders(order_name, order_price) values('v8',300),('p9',700),('r6',3200);
相关推荐
总之,面对字段名与实体类属性名不一致的问题,MyBatis提供了多种解决方案,包括使用`<resultMap>`、在SQL语句中直接调整列名,以及使用注解。通过学习源代码,我们可以掌握这些方法,提升在实际项目中的应用能力。
让字段的别名与实体类的属性名相同, 优点:操作简单,容易理解。 缺点:当这样的语句出现的次数过多的时候,到时冗余代码增多,这些别名不能重用。 select _id id, name, age from user @Select("select _id id, ...
总结来说,解决MyBatis字段名与实体类属性名不匹配的问题主要依赖于别名配置、ResultMap、注解以及自动映射策略。根据项目的具体需求和结构,可以选择最合适的解决方案。记得在使用这些方法时,确保MyBatis的配置...
MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不...
实体类生成器的工作原理通常是通过连接到数据库,读取表结构信息,包括字段名、数据类型和约束等,然后根据这些信息自动生成C#源代码。生成的代码会包含类定义,属性声明,以及可能的验证规则和关系映射。这样,...
2. **字段名不一致**:数据库中的字段名与映射文件或实体类属性名不一致。 **解决方案**: 1. **避免关键字冲突**: - 使用反引号(``)包裹关键字作为字段名。 - 重命名数据库字段以避免使用关键字作为字段名。 ...
1.mybatis快速入门 2.使用mybatis对表执行CRUD操作 3.优化mybatis配置文件中的配置 4.解决字段名与实体类属性名不相同的冲突 5.实现关联表查询 6.调用存储过程 7.mybatis缓存 8.mybatis 3.x与Spring 4.X整合
5.mybatis解决字段名与实体类属性名不相同的冲突 6.mybatis一对一关联、一对多关联 7.mybatis动态SQL与模糊查询实现 8.mybatis调用存储过程 9.mybatis缓存(一级缓存、二级缓存) 10.spring集成mybatis
- 当表名和字段名中出现特殊字符或保留字时,可以用下划线来避免冲突。 - 为表名和字段名加上合适的前缀或后缀,如"idx"表示索引,"table"表示表。 总结以上要点,数据库命名规范应该能够帮助开发者和数据库管理...
v0.6 - 解决字段名与实体类属性名不相同的冲突 v0.7 - MyBatis中使用association标签来解决一对一的关联查询 v0.8 - MyBatis中使用collection标签来解决一对多的关联查询 v0.9 - 调用存储过程 v1.0 - Mybatis一级...
#### 六、解决字段名与实体类属性名不相同的冲突 1. **配置字段映射**: - 在`userMapper.xml`中使用`resultMap`元素定义字段与属性的映射关系。 #### 七、关联表查询 1. **一对一关联**: - 在映射文件中使用`...
"Mybatis学习(四)解决表字段名和实体类属性名不相同的冲突.docx"可能讨论了如何处理数据库字段名与Java实体类属性名不一致的情况。Mybatis通过别名(aliases)或者注解(@Column)来实现字段映射,使得两者可以...
- 实体类属性与表字段的映射:通过`<property>`标签将实体类的普通属性映射成表字段。 - 如果实体类名、属性名与SQL中的关键字冲突,需使用`table`或`column`属性重新命名。 #### 六、主键生成策略 - **UUID**:...
- 避免使用数据库保留字:确保表名不与SQL关键字冲突,以免引起解析错误。 2. **字段命名**: - 与属性名保持一致:字段名应与对应的Java Bean或对象属性名称一致,方便前后端数据绑定和映射。 - 避免与数据库...
在这个例子中,`name`属性指的是当前实体类中的属性名,这个属性将持有与之关联的实体的引用。`class`属性则是关联实体的全限定类名。`cascade`属性可以用来指定级联操作,比如“all”表示所有操作(保存、更新、...
若有多个处理方法,class属性应与Action类的类名一致。 5. 类变量定义:所有全局变量在类开头统一定义,get和set方法置于类的末尾。 6. 变量命名:变量首字母小写,多词命名时第二个词及以后首字母大写,如...
例如,在Hibernate中,你可以通过在User实体类的loginName属性上添加`@Column(unique = true)`注解来声明唯一性。 3. 验证器:在前端,Java的Bean Validation框架允许你在用户提交数据前进行验证。你可以创建一个...
6. **方法重载**:方法重载允许在同一个类中使用相同的函数名,但通过不同的参数类型或数量来区分不同的方法,提高代码的可读性和灵活性。 7. **构造函数**:构造函数在创建对象时自动调用,用于初始化新创建的对象...