5.Mybatis當實體類屬性和資料庫欄位不匹配時怎麼設定
阿新 • • 發佈:2020-11-27
1.結構圖
2.User實體類
package com.itheima.domain; import java.util.Date; public class User { private Integer uId; private String userName; private String uSex; private Date uBirthday; private String uAddress; public Integer getuId() { return uId; } public void setuId(Integer uId) { this.uId = uId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getuSex() { return uSex; } public void setuSex(String uSex) { this.uSex = uSex; } public Date getuBirthday() { return uBirthday; } public void setuBirthday(Date uBirthday) { this.uBirthday = uBirthday; } public String getuAddress() { return uAddress; } public void setuAddress(String uAddress) { this.uAddress = uAddress; } @Override public String toString() { return "User{" + "uId=" + uId + ", userName='" + userName + '\'' + ", uSex='" + uSex + '\'' + ", uBirthday=" + uBirthday + ", uAddress='" + uAddress + '\'' + '}'; } }
3.IUserDao介面
package com.itheima.dao;
import com.itheima.domain.User;
import java.util.List;
public interface IUserDao {
//查詢所有
List<User> findAll();
//儲存一個
void saveUser(User user);
//修改一個
void updateUser(User user);
//刪除一個
void deleteUser(String userId);
}
4.IUserMapper對應介面的配置檔案
<?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.itheima.dao.IUserDao"> <!--1.起別名--> <!--2.resultMap--> <!-- 解決domain中屬性和資料庫段名不匹配問題 還有起別名的方式:屬性名as資料庫名 --> <resultMap id="userMap" type="com.itheima.domain.User"> <!--主鍵欄位--> <id property="uId" column="id"></id> <!--非主鍵欄位--> <result property="userName" column="username"></result> <result property="uSex" column="sex"></result> <result property="uBirthday" column="birthday"></result> <result property="uAddress" column="address"></result> </resultMap> <!--查詢所有--> <!-- 對映機制: 不寫 resultType="com.itheima.domain.User" 而是 resultMap="userMap" --> <select id="findAll" resultMap="userMap"> select * from user </select> <!--插入一個--> <select id="saveUser" parameterType="com.itheima.domain.User"> insert into user(username,sex,birthday,address)values(#{userName},#{uSex},#{uBirthday},#{uAddress}) </select> </mapper>
5.SqlMapConfig mybatis主配置檔案
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--mybatis的主配置-->
<configuration>
<!--配置環境-->
<environments default="mysql">
<!--配置環境-->
<environment id="mysql">
<!--配置事務-->
<transactionManager type="JDBC"></transactionManager>
<!--配置連線池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db_mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--xml方式進行配置-->
<mappers>
<mapper resource="com/itheima/dao/IUserMapper.xml"></mapper>
</mappers>
</configuration>
6.測試類
package com.ithiema;
import com.itheima.dao.IUserDao;
import com.itheima.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
/*又菜又愛玩*/
public class MybatisCRUD {
private InputStream inputStream;
private SqlSessionFactory factory;
private SqlSession sqlSession;
private IUserDao userDao;
//1.一上來就執行好嗎哈哈哈
@Before
public void init()throws Exception{
//1.獲取位元組流
inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.建立工廠
factory = new SqlSessionFactoryBuilder().build(inputStream);
//3.獲取sqlSession物件
sqlSession = factory.openSession();
//4.通過IUserDao.class位元組碼獲取userDao
userDao = sqlSession.getMapper(IUserDao.class);
}
/*查詢所有*/
@Test
public void testFindAll(){
//5.執行查詢所有
List<User> users = userDao.findAll();
for (User user:users){
System.out.println(user);
}
}
/*儲存一個*/
@Test
public void testSaveUser(){
User user = new User();
user.setUserName("李四");
user.setuSex("男");
user.setuBirthday(new Date());
user.setuAddress("駐馬店");
userDao.saveUser(user);
System.out.println("儲存成功....");
}
//都在後面執行好嗎哈哈哈
@After
public void destroy()throws Exception{
//6.提交事務
sqlSession.commit();
//6.釋放資源
sqlSession.close();
inputStream.close();
}
/*不打註釋就會出現空指標異常*/
}
7.依賴pomxl
<dependencies>
<!--sql驅動:連線資料庫用-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!--測試的依賴-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--日誌-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--mybatis環境-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
</dependencies>