博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis的简单使用(增删改查),解决数据库字段名和实体类映射属性名不一致的问题
阅读量:3890 次
发布时间:2019-05-23

本文共 5366 字,大约阅读时间需要 17 分钟。

Mybatis简单介绍

  • 什么是Mybatis?

    • Mybatis是一款优秀的持久层框架
    • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

Mybatis入门

  1. 首先,如果使用Maven来构建项目,要想使用Mybatis,则需要将下面的dependency代码置于pom.xml中,我这里使用的是目前Mybatis的比较稳定的版本3.5.1;
org.mybatis
mybatis
3.5.1
  1. 我这里先有一个数据库,需要的话,可以用,当然,要导入数据库:
CREATE DATABASE /*!32312 IF NOT EXISTS*/`mybatis` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `mybatis`;DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (  `id` int(20) NOT NULL,  `name` varchar(30) DEFAULT NULL,  `pwd` varchar(30) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert  into `user`(`id`,`name`,`pwd`) values (1,'狂神','123456'),(2,'张三','abcdef'),(3,'李四','987654');
  1. 创建一个工具类,构建SQLSessionFactory对象;
import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;//mybatis的工具类,重复的代码的提纯public class MyBatisUtils {
//类变量不需要设置默认值; private static SqlSessionFactory sqlSessionFactory; static {
//在maven中,所有的资源文件一般都放在resources目录下,我们可以直接拿到。 InputStream inputStream = null; try {
String resource = "mybatis-config.xml"; inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) {
e.printStackTrace(); }finally {
if (inputStream != null){
try {
inputStream.close(); } catch (IOException e) {
e.printStackTrace(); } } } } //设置SqlSessionFactory公共的方法 public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory; }}
  1. database.properties :存放关于连接数据库的内容。
driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf-8username=rootpassword=123456
  1. 创建一个配置文件,mybatis-config.xml,XML 配置文件中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器。
  1. 创建实体类User
public class User {
private int id; private String name; private String pwd; public User() {
} public User(int id, String name, String pwd) {
this.id = id; this.name = name; this.pwd = pwd; } public int getId() {
return id; } public void setId(int id) {
this.id = id; } public String getName() {
return name; } public void setName(String name) {
this.name = name; } public String getPwd() {
return pwd; } public void setPwd(String pwd) {
this.pwd = pwd; } @Override public String toString() {
return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; }}
  1. 创建dao层,获取所有user的列表
import com.baidu.pojo.User;import java.util.List;public interface UserMapper {
//获取全部的用户 List
selectUser();}
  1. 创建一个UserMapper的映射文件UserMapping.xml
  1. 关联映射文件在刚才创建的文件mybatis-config.xml中,放在这个位置。
    在这里插入图片描述
  1. 创建test测试文件
import com.baidu.pojo.User;import com.baidu.utils.MyBatisUtils;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.junit.Test;import java.util.List;public class UserMapperTest {
@Test public void selectUser(){
//1.拿到sqlSessionFactory对象 SqlSessionFactory sqlSessionFactory = MyBatisUtils.getSqlSessionFactory(); //2.通过sqlSessionFactory对象openSession()创建一个sqlSession。 SqlSession sqlSession = sqlSessionFactory.openSession(); //3.通过sqlSession获得mapper对象 , 参数为映射文件对应的接口类的class对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); //4.通过mapper对象来执行操作; List
users = mapper.selectUser(); //获得结果集 for (User user : users) {
System.out.println(user); } }}
  1. 出来了数据了,就证明成功了!
    在这里插入图片描述

Mybatis的增删改查(CRUD)

  1. 首先配置你的dao层代码
import com.baidu.pojo.User;import java.util.List;public interface UserMapper {
//获取全部的用户 List
selectUser(); User getUserById(int id); int insertUser(User user); int removeUserById(int id); int updateUser(User user);}
  1. 配置映射文件UserMapping.xml
    
insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
delete from user where id = #{id}
update user set name = #{name},pwd = #{pwd} where id = #{id}

Mybatis处理字段名和属性不一致

属性:实体类

字段:数据库

比如说,你在数据库中的字段名是pwd,而你在实体类中写的是password,则在查询的时候,就会出现如下情况:

在这里插入图片描述

  1. 解决方法一:将实体类中的setPassword方法,设置成和数据库字段名一样(不推荐使用,代码不美观)

在这里插入图片描述

  1. 解决方法二:mysql数据库查询时,起别名。(不推荐使用,字段多的情况下,比较乱)

    在这里插入图片描述

  2. 解决方法三:

    在这里插入图片描述

转载地址:http://jhohn.baihongyu.com/

你可能感兴趣的文章
VC小技巧20个
查看>>
MFC Feature Pack for Visual C++ 2008的BUG之一
查看>>
POJ - 2739 Sum of Consecutive Prime Numbers
查看>>
STL map映照容器(一)map创建、元素插入、元素删除和遍历访问
查看>>
Leetcode - 557反转字符串中的单词III
查看>>
Leetcode - 160相交链表
查看>>
Leetcode - 11盛最多水的容器
查看>>
Leetcode - 141环形链表
查看>>
Leetcode - 14最长公共前缀
查看>>
Leetcode - 7整数反转
查看>>
PAT---B1022. D进制的A+B (20)
查看>>
PAT---B1037. 在霍格沃茨找零钱(20)
查看>>
PAT---A1019. General Palindromic Number (20)
查看>>
PAT---A1027. Colors in Mars (20)
查看>>
PAT---1058. A+B in Hogwarts (20)
查看>>
PAT---A1001. A+B Format (20)
查看>>
PAT---A1005. Spell It Right (20)
查看>>
PAT---A1035. Password (20)
查看>>
PAT---A1077. Kuchiguse (20)
查看>>
PAT---A1062. Talent and Virtue (25)
查看>>