mybatis相关使用_lombok插件

Day52

mybatis高级

mybatis核心文件配置信息

1,加入properties文件

在resource中创建dbinfo.properties文件,包含数据库连接信息

<properties resource = "dbinfo.properties"/>

注:
	在数据源的值里面使用${properties的键值名}
	
<environments default="development">
     <environment id="development">
         <transactionManager type="JDBC"/>
         <dataSource type="POOLED">
             <property name="driver" value="${driver}"/>
             <property name="url" value="${url}"/>
             <property name="username" value="${username}"/>
             <property name="password" value="${password}"/>
         </dataSource>
     </environment>
</environments>	
2,setings设置
日志
<!--log4j(SSM)/slf4j(springboot)STDOUT_LOGGING-->

<setting name="logImpl" value="STDOUT_LOGGING"/>
3,typeAliases
别名

别名1:

第一种:给类定义别名,别名自行定义
	<typeAlias type="com.jlf.entity.User" alias="u"/>  

别名2:

第二种:引入包名,此时别名默认为类的首字母小写方式
 <package name="com.jlf.entity"/>,例:com.qf.entity.User-->user

别名3:

第三种:java内建类型的别名,查表 ---mybatis;
	例:java.util.Map;-->map

参数传递方式

参数的使用语法:#{参数名}

1,序号传参

序号传参中:与接口中参数个数、顺序一致

​ -arg0 arg1…
​ -param1 param2…

接口:public void insert(String name)

2,实体传参

实参的属性名即为参数名

接口:public void insert(User user);  
			//User: name/pass/tel

sql: 
<insert id="" parameterType="user">
		insert into tb_user(u_name,u_pass,u_tel) values(#{name},#{pass},#{tel})
	</insert>

3,单个参数传参

当参数只有一个值时,可任任意命名参数名

接口:int deleteById(int id);
	User selectOne(String name);

sql: 
	delete from tb_user where u_id=#{id}
	select * from tb_user where u_name like concat('%',#{username},'%')

4,注解传参

@Param—mybatis提供的

// name表示方法的形参名
// uname表示传给mybatis的sql里的参数名
接口:User selectOne(@Param("uname")String name,@Param("upass")String pass);

sql: select * from tb_user where u_name=#{uname} and u_pass=#{upass}

5,map传参

使用parameternalType = “map”

通过的map中的key值进行传值

测试类:
	Map map=new HashMap<String String>();
	map.put(键值,值);//map.put("name","admin");
	map.put(键值,值);//map.put("oass","124");
	
接口:User selectOne(Map map);//集合中可以存储多对键值对

sql: <select id="" parameterType="map" resultType="user">
		select * from tb_user where u_name=#{map的键值名} and u_pass=#{map的键值名}
	</select>
	

添加回填功能

自增主键回填功能

<insert id ="方法名" parameterType = "user传参的实体类型">
<selectKey keyProperty="uid实体属性名",resultType="Integer主键类型" order="after主键生成顺序">
select last_insert_id  ----获取最后一次添加的id
</selectKey>
insert into tb_user values (#{uid},#{name},#{pass},#{tel},#{mail})
</insert>

非自增主键回填功能

<insert id ="方法名" parameterType = "order传参的实体类型">
<selectKey keyProperty="oid实体属性名",resultType="String主键类型" order="before主键生成顺序">
	select REPLACE(uuid(),'-','') ---生成一个随机字符串
</selectKey>
 insert into sys_orders values(#{oid},#{uid},#{total},#{tel},#{addr},#{oname})
</insert>

注:当主键是字符类型时,需要提交生成字符的值,再将这个值赋值给实体属性;

查询

​ resultMap的用法( 基本的字段和属性的映射/对多关系/对一关系)
​ collection对多关系的标签
​ association对一关系的标签

1,单表查询

别名查询

当实体的属性名与表字段名不一致时,可以使用给字段定义别名,实现表字段与实体类属性之间的映射;

<select id="" resultType="返回数据对应的封装的实体类型">
	select * from 表
</select>
resultMap映射

resultMap映射:当实体的属性名与表字段名不一致时,可以使用resultMap实现映射

<resultMap id="唯一base" type="返回数据对应的封装的实体类型">
		<id column="列名称" property="属性名" /> //表示主键字段
		<result  column="列名称" property="属性名" /> //表示非主键字段
		。。。。若干result标签表示非主键字段
	</resultMap>
	
	<select id="" resultMap="resultMap的id值-base">
     select * from 表
 </select>

2,一对多查询

	用户实体类:User
		private Integer uid;
		private String uname;
		...用户基本信息
		
		private List<Orders> ordereList;//用于表示一对多的关系;表示一个用户有多个订单信息;
		
	订单实体类:Orders
		private String oid;
		private String oname;
		.....订单基本信息;
		
	用户的映射元文件:UserMapper.xml-->以用户表为主,返回实体是User类
	
		resultMap标签:
		<resultMap id="base" type="user">
			<id column="主键字段" property="实体属性名"/>
			<result column="非主键字段" property="实体属性名"/>
			....
			<collection property="ordereList对多属性名" ofType="orders集合属性的泛型类型">
				...订单c表和订单实体类之间的映射关系
			</collection>
		</resultMap>
	
		//多表联合查询:左外/右外/内连接/等值连接.....
		<select id="select" resultMap="base">
			select * from sys_user u,sys_order o where u.u_id=o.u_id where u.u_name=#{} and u.u_pass=#{}
		</select>	

3,一对一查询

	用户实体类:User
		private Integer uid;
		private String uname;
		...用户基本信息
		
	订单实体类:Orders
		private String oid;
		private String oname;
		.....订单基本信息;
		private User user;//对一属性
		
	用户的映射元文件:OrderMapper.xml-->返回值的实体是Orders
		//多表联合查询:左外/右外/内连接/等值连接。。。
		<select id="select" resultMap="base">
			select * from sys_user u,sys_order o where u.u_id=o.u_id where o.o_id=#{oid}
		</select>
		
	resultMap标签:
		<resultMap id="base" type="orders">
			<id column="主键字段" property="实体属性名"/>
			<result column="非主键字段" property="实体属性名"/>
			....
			<association property="user" javaType="对一属性的类型">
				..用户基本信息的映射
			</association>
		</resultMap>

lombok插件

-------idea插件

在idea中安装插件:settings–>plugin

搜索 lombok
install
重启idea

-------在pom.xml中引入依赖

<dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <version>1.18.22</version>
</dependency>

使用注解生成相关方法,构造等

getter/setter
toString
equals
无参/有参构造

@Data //生成get/set
@AllArgsConstructor //全参构造
@NoArgsConstructor //无参构造
@RequiredArgsConstructor //个别参数构造,与@NonNull注解对应
public class User {
	@NonNull
 private String name; //属性
 	@NonNull
 private int age; //属性
 private String sex; //属性
 .....
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值