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

江门网站优化山东最新资讯

江门网站优化,山东最新资讯,wordpress打赏怎么用,做网站用什么ps软件目录 1、Mapper接口和映射文件关系 2、Mapper接口和映射文件的命名规则 2.1 Mapper接口的命名规则 2.2 映射文件的命名规则 3、Mapper接口和映射文件的创建及增删改查的实现 3.1 Mapper接口和映射文件的创建 3.2 增删改查的实现 3.2.1表结构 3.2.2 创建表User对应的实…

目录

1、Mapper接口和映射文件关系

2、Mapper接口和映射文件的命名规则

2.1 Mapper接口的命名规则

2.2 映射文件的命名规则

3、Mapper接口和映射文件的创建及增删改查的实现

3.1 Mapper接口和映射文件的创建

3.2 增删改查的实现

3.2.1表结构

3.2.2 创建表User对应的实体类

3.3.3 创建表User对应的Mapper接口

3.3.4 创建UserMapper接口对应的映射文件,并实现Sql语句

4、MyBatis核心配置文件关联Mapper接口和映射文件

5、测试Mapper接口中的方法

6、测试结果


1、Mapper接口和映射文件关系

个人理解为:Mapper接口类似于以前的Dao接口,映射文件类似于实现Dao接口中的各个方法。

在Mapper接口中定义了对数据库的各种操作方法,这些方法的实现需要在映射文件编写各种SQL语句。

2、Mapper接口和映射文件的命名规则

一个Mapper接口(映射文件)对应一个实体类,对应一张表的操作方法(SQL语句)。Mapper接口用于声明操作数据库的方法; MyBatis映射文件用于编写SQL,访问以及操作表中的数据。

MyBatis的Mapper接口的位置是src/main/项目名/mappers目录下;映射文件存放的位置是src/main/resources/mappers目录下。

2.1 Mapper接口的命名规则

表所对应的实体类的类名+Mapper

例如:表t_user,对应的实体类为User,所对应的Mapper为UserMapper。

2.2 映射文件的命名规则

表所对应的实体类的类名+Mapper.xml

例如:表t_user,映射的实体类为User,所对应的映射文件为UserMapper.xml 。

3、Mapper接口和映射文件的创建及增删改查的实现

3.1 Mapper接口和映射文件的创建

Mapper接口的创建和普通的Java接口创建方法相同。

映射文件的创建如下,mapper标签中的namespace属性是mapper接口的路径。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Mapper接口路径"></mapper>

3.2 增删改查的实现

下面以表t_user为例创建Mapper接口和映射文件,实现基本的增删改查。

3.2.1表结构

t_user表的结构如查下所示:

3.2.2 创建表User对应的实体类

public class User {private Integer id;private String userName;private String password;private Integer age;private char gender;public User() {}public User(Integer id, String userName, String password, Integer age, char gender) {this.id = id;this.userName = userName;this.password = password;this.age = age;this.gender = gender;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}@Overridepublic String toString() {return "User{" +"id=" + id +", userName='" + userName + '\'' +", password='" + password + '\'' +", age=" + age +", gender=" + gender +'}';}
}

3.3.3 创建表User对应的Mapper接口

import com.review.mybatis.pojo.User;public interface UserMapper {//添加用户int insertUser(User user);//根据用户名和密码删除用户int deleteUser(String username,String password);//修改用户信息int modifyUser(User user,Integer id);//根据用户名查询用户信息User getUserByUsername(String username);
}

3.3.4 创建UserMapper接口对应的映射文件,并实现Sql语句

MyBatis中可以面向接口操作数据,要保证两个一致:

1、mapper接口的全类名和映射文件的命名空间(namespace)保持一致

2、mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.review.mybatis.mapper.UserMapper">
<!--    int insertUser(User user);--><insert id="insertUser" >insert into t_user(id,userName,password,age,gender) values(null,#{userName},#{password},#{age},#{gender})</insert>
<!--    int deleteUser(String username,String password);--><delete id="deleteUser">delete from t_user where username=#{arg0} and password=#{arg1}</delete>
<!--    int modifyUser(User user,Integer id);--><update id="modifyUser" >update t_user set username=#{arg0.userName},password=#{arg0.password},age=#{arg0.age},gender=#{arg0.gender} where id=#{arg1}</update>
<!--    User getUserByUsername(String username);--><select id="getUserByUsername" resultType="User">select id,username,password,age,gender from t_user where username=#{arg0}</select>
</mapper>

上述代码中mapper接口和映射文件要保证一致:

①mapper接口的全类名和映射文件的namespace一致

②mapper接口的方法的方法名和映射文件中的sql的id保持一致

执行UserMapper接口中的方法时,通过映射文件中属性id绑定的方法名执行Sql语句。

对于查询操作:resultType:设置结果类型,记查询的数据要转换成的java类型,代码中将数据转成User类型

MyBatis获取参数值的两种方式:${}和#{}。

${}的本质就是字符串拼接,#{}的本质就是占位符赋值;${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号。

映射文件中无法识别Mapper接口方法中的形参,若mapper接口中的方法参数为一个时,可以用任何字符串表示该参数;若mapper接口中的方法参数为多个时 此时MyBatis会自动将这些参数放在一个map集合中,以arg0,arg1...为键,以参数为值;以 param1,param2...为键,以参数为值;因此只需要通过${}和#{}访问map集合的键就可以获取相对应的值。

4、MyBatis核心配置文件关联Mapper接口和映射文件

通过包设置类型别名,指定包下所有的类型将全部拥有默认的别名,即类名且不区分大小写,方便UserMapper.xml文件中resultType属性的设置:

resultType=”User“等同于resultType="com.review.mybatis.pojo.User"

通过包设置类型别名如下所示:

<typeAliases><package name="com.review.mybatis.pojo"/>
</typeAliases>

以包的方式引入映射文件,在通过Mapper接口调用方法时,通过MyBatis核心配置文件查找到映射文件的位置,从而执行sql语句。但是以包的方式引入映射文件必须满足两个条件:
1、mapper接口和映射文件所在的包必须一致
2、mapper接口的名字和映射文件的名字必须一致

如下所示:

    <mappers><package name="com.review.mybatis.mapper"/></mappers>

 完整的MyBatis核心配置文件如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--MyBatis核心配置文件中的标签必须要按照指定的顺序配置:properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?--><properties resource="jdbc.properties"/><typeAliases><package name="com.review.mybatis.pojo"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment><environment id="test"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/ssm"/><property name="username" value="root"/><property name="password" value="123456789"/></dataSource></environment></environments><mappers><package name="com.review.mybatis.mapper"/></mappers>
</configuration>

MyBatis配置文件:配置连接数据库的环境,实现数据库连接_qq_46053741的博客-CSDN博客

5、测试Mapper接口中的方法

创建一个测试类,测试Mapper接口中的方法:

import com.review.mybatis.mapper.UserMapper;
import com.review.mybatis.pojo.User;
import com.review.mybatis.utils.JdbcUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;public class UserMapperTest {@Testpublic void insertUser() {SqlSession sqlSession= JdbcUtil.getSqlSession();//获取UserMapper的代理实现类对象UserMapper userMapper=sqlSession.getMapper(UserMapper.class);int isInsert=0;isInsert=userMapper.insertUser(new User(null,"小黑子","1234",34,'男'));if(isInsert>0){System.out.println("数据添加成功");}else{System.out.println("数据添加失败");}JdbcUtil.closeSqlSessionAndCommit(sqlSession);}@Testpublic void deleteUser() {SqlSession sqlSession= JdbcUtil.getSqlSession();//获取UserMapper的代理实现类对象UserMapper userMapper=sqlSession.getMapper(UserMapper.class);int isDelete=0;isDelete=userMapper.deleteUser("蔡徐坤","123456");if(isDelete>0){System.out.println("数据删除成功");}else{System.out.println("数据删除失败");}JdbcUtil.closeSqlSessionAndCommit(sqlSession);}@Testpublic void modifyUser() {SqlSession sqlSession= JdbcUtil.getSqlSession();//获取UserMapper的代理实现类对象UserMapper userMapper=sqlSession.getMapper(UserMapper.class);User user=new User(3,"小黑子","1234",30,'男');int isModify=0;isModify=userMapper.modifyUser(user,3);if(isModify>0){System.out.println("数据修改成功");}else{System.out.println("数据修改失败");}JdbcUtil.closeSqlSessionAndCommit(sqlSession);}@Testpublic void getUserByUsername() {SqlSession sqlSession= JdbcUtil.getSqlSession();//获取UserMapper的代理实现类对象UserMapper userMapper=sqlSession.getMapper(UserMapper.class);User user=userMapper.getUserByUsername("小黑子");System.out.println(user);JdbcUtil.closeSqlSessionAndCommit(sqlSession);}
}

代码中UserMapper接口无法实例化对象,因此采用UserMapper的代理实现类对象
      

UserMapper userMapper=sqlSession.getMapper(UserMapper.class);

6、测试结果

int insertUser(User user)测试结果:

控制台:

数据库:

 

 int modifyUser(User user,Integer id)测试结果:

控制台:

数据库:

 

 User getUserByUsername(String username)测试结果:

控制台:

​​​​​​​ int deleteUser(String username,String password)测试结果:

控制台:

数据库:

​​​​​​​​​​​​​​

http://www.yidumall.com/news/27608.html

相关文章:

  • 企业php 网站系统关键词优化排名首页
  • 自己如何免费做网站视频优化是什么意思
  • 长春做网站企业哪个平台可以免费推广
  • 佛山网站建设网络公司市场调研问卷调查怎么做
  • 没网站可以做快排吗国际新闻最新消息十条摘抄
  • 怎样做自己的网站和发布网站东莞seo软件
  • dreamware怎么做网站搜索最全的搜索引擎
  • 成都公园城市建设局网站建网站的公司
  • 如何加入小说网站做打字员营销策划方案案例
  • 小门户网站开发武汉seo服务
  • 做程序的网站网站设计软件
  • 宿迁网站制作公司百度一下你就知道下载
  • 网站建设与维护学什么科目成人计算机速成培训班
  • 青海网站建设网站备案是什么意思
  • 做网站所用的技术郑州seo代理公司
  • 网站开发那种语言如何做一个网站的seo
  • 东平网站建设seo搜索优化是什么意思
  • 做网站运营需要具备哪些能力名片seo什么意思
  • 摄影化妆艺术学校网站源码营销推广ppt
  • 替老外做网站域名是什么意思
  • wordpress 主题设置中文版seo外链在线提交工具
  • 怎么建设一个淘宝客网站百度识图搜索引擎
  • 武汉 网站建设产品推广ppt范例
  • 汽车网站建设公司哪家好百度灰色关键词排名技术
  • 西安学校网站制作查淘宝关键词排名软件
  • 每天4元代发广告南宁seo外包靠谱吗
  • 360百度网站怎么做社会新闻热点事件
  • 网页设计与制作项目教程html+css+java课后答案优化营商环境评价
  • seo提升排名福州seo兼职
  • 网站开发代码语言优化大师官方正版下载