当前位置: 首页 > news >正文

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; //属性
 .....
}

相关文章:

  • 网站备案密码丢了怎么办/厦门关键词优化网站
  • 做外贸网站 用国外空间 还是 国内空间 区别/推广优化工具
  • 麓谷做网站的公司/太原seo优化
  • 网站建设php培训/郑州网络推广平台
  • 新疆生产建设兵团公积金查询网站/站长统计软件
  • wordpress 推送到百度/网络推广产品公司
  • 5G核心网UPF硬件加速技术
  • 服务之星网络评选视频投票小程序如何进行视频投票免费公众号投票
  • 解决原 Unique Key 模型存在的问题
  • Shell ❀ 正则表达式
  • xxe-lab靶场安装和简单php代码审计
  • Kibana:圣诞老人使用 Kibana Dashboards 驾驶他的雪橇!
  • 离线下载NLTK依赖包([WinError 10061] 由于目标计算机积极拒绝,无法连接)的解决方案
  • 基于matlab的MIMO-OFDM无线信道模型距离与路径损耗的仿真
  • 0.96寸OLED显示屏介绍续
  • 90后,27岁转行软件测试,从月入3000+到月薪过万,打开了人生新篇章~
  • 2022年安徽最新交安安全员考试模拟题及答案
  • C++【图】