mybatis的使用:
1.新建maven项目
2.配置pom.xml文件
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
3. 在resources文件夹下新建db.properties,mybatis-config.xml和Mapper.xml
1.配置db.properties文件
#数据库驱动
driver=com.mysql.cj.jdbc.Driver
#数据库url
url=jdbc:mysql://localhost:3306/smbms
#用户名
username=root
#密码
password=Sjx12345678
2. 配置mybatis文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.5.3//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties>
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/smbms"/>
<property name="username" value="root"/>
<property name="password" value="Sjx12345678"/>
</properties>
<settings>
<setting name="autoMappingBehavior" value="NONE"/>
</settings>
<typeAliases>
<typeAlias type="pojo.User" alias="User"/>
<package name="pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<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>
<mappers>
<mapper resource="userMapper.xml"></mapper>
</mappers>
</configuration>
3.配置Mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.5.3//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserMapper">
<select id="queryUser" resultType="pojo.User">select * from smbms_user</select>
<select id="queryUserByUserName" resultType="pojo.User" parameterType="String">
SELECT id,userCode,userPassword,userName FROM smbms_user Where userName like concat('%',#{userName},'%');
</select>
<sql id="user_base_sql">
id,userCode,userPassword,userName
</sql>
<select id="queryUserByObject" resultMap="userRoleMap">
select smbms_user.id,userCode,userPassword,userName,smbms_role.roleName from smbms_user,smbms_role where smbms_user.userRole = smbms_role.id and userName like concat('%',#{userName},'%') and userRole = #{userRole};
</select>
<resultMap id="userRoleMap" type="User">
<id property="id" column="id"/>
<result property="userName" column="userName"/>
<result property="userRoleName" column="roleName"/>
</resultMap>
</mapper>
4.新建实体类(用来规定从数据库返回的值的类型):
package pojo;
import dao.UserMapper;
import java.util.List;
public class User {
private Long id;
private String userCode;
private String userPassword;
private String userName;
private Integer userRole;
private String userRoleName;
public String getUserRoleName() {
return userRoleName;
}
public void setUserRoleName(String userRoleName) {
this.userRoleName = userRoleName;
}
public Integer getUserRole() {
return userRole;
}
public void setUserRole(Integer userRole) {
this.userRole = userRole;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userCode='" + userCode + '\'' +
", userPassword='" + userPassword + '\'' +
", userName='" + userName + '\'' +
", userRole=" + userRole +
", roleName='" + userRoleName + '\'' +
'}';
}
}
5.创建接口,用来接收返回值;
package dao;
import org.apache.ibatis.annotations.Param;
import pojo.User;
import java.util.List;
public interface UserMapper {
List<User> queryUser();
List<User> queryUserByUserName(String userName);
List<User> queryUserByUserNameAndRoleId(@Param("userName") String userName,@Param("roleId") Integer roleId);
List<User> queryUserByObject(User user);
}
6.创建工具类(此工具类需要记忆):
package util;
import dao.UserMapper;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class SqlSessionFactoryUtil {
private static SqlSessionFactory sqlSessionFactory = null;
private static final Class CLASS_BLOCK = SqlSessionFactoryUtil.class;
private SqlSessionFactoryUtil(){}
public static SqlSessionFactory createSqlSessionFactory(){
if (sqlSessionFactory == null){
String resource = "mybatis-config.xml";
try {
InputStream is = Resources.getResourceAsStream(resource);
synchronized (CLASS_BLOCK){
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
}
} catch (IOException e) {
System.out.println("文件读取失败。。。。。");
e.printStackTrace();
}
return sqlSessionFactory;
}else{
return sqlSessionFactory;
}
}
public static SqlSession getSqlSession(boolean openAutoCommit){
sqlSessionFactory = createSqlSessionFactory();
return sqlSessionFactory.openSession(openAutoCommit);
}
}
7.创建测试类
package dao;
import junit.framework.TestCase;
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 pojo.User;
import util.SqlSessionFactoryUtil;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class UserMapperTest{
private SqlSession sqlSession;
private UserMapper userMapper;
@After
public void after(){
if (sqlSession != null){
sqlSession.close();
}
}
@Before
public void before(){
sqlSession = SqlSessionFactoryUtil.getSqlSession(false);
userMapper = sqlSession.getMapper(UserMapper.class);
}
@Test
public void testQueryUser() {
String resources = "mybatis-config.xml";
try{
InputStream is = Resources.getResourceAsStream(resources);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> users = userMapper.queryUser();
for (User user : users) {
System.out.println(user);
}
}catch (IOException e){
e.printStackTrace();
}
}
@Test
public void utilTest(){
SqlSession sqlSession = SqlSessionFactoryUtil.getSqlSession(false);
List<Object> objects = sqlSession.selectList("queryUser");
System.out.println(objects);
UserMapper userMapper= sqlSession.getMapper(UserMapper.class);
List<User> users = userMapper.queryUser();
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
@Test
public void util2(){
List<User> users = userMapper.queryUser();
for (User user : users) {
System.out.println(user);
}
}
@Test
public void testQueryUserByUserName() {
List<User> users = userMapper.queryUserByUserName("孙");
for (User user : users) {
System.out.println(user);
}
}
@Test
public void queryUserByUserNameAndRoleId() {
List<User> users = userMapper.queryUserByUserNameAndRoleId("孙",3);
for (User user : users) {
System.out.println(user);
}
}
@Test
public void testqueryUserByObject() {
User test = new User();
test.setUserName("孙");
test.setUserRole(3);
List<User> users = userMapper.queryUserByObject(test);
for (User user : users) {
System.out.println(user);
}
}
}