SSM-MyBatis
1、SSM:
SSM:Spring SpringMVC MyBaits 缩写,SSI:Spring SpringMVC iBatis,SSH:Spring Struts Hibernate
关于Hibernate和MyBatis,同属于持久化技术(数据持久化),
ORMapping技术:对象关系映射技术,将一个对象(User对象)映射成一行表数据(表中一条记录)
User user =new User();//
iBatis:是MyBatis的早期版本,iBatis升级到3.0时,将iBatis更名为MyBatis
Struts : mvc框架 Struts和SpringMVC的功能一致
2、MyBatis:MyBatis是一个轻量级的持久化框架(ORMapping技术)
3、MyBatis-基本的CURD操作以及MyBatis配置文件映射文件配置
①、导入jar包
aopalliance-1.0.jar
cglib-2.2.2.jar
commons-logging-1.1.1.jar
hamcrest-core-1.3.jar
junit-4.12.jar
log4j-1.2.17.jar
mybatis-3.2.8.jar
mybatis-generator-core-1.3.5.jar
mybatis-spring-1.1.1.jar
mysql-connector-java-5.1.22-bin.jar
ojdbc14.jar②、配置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"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/newsystem"/> <property name="username" value="root"/> <property name="password" value="admin"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/rock/dao/UserMapper.xml"/> </mappers> </configuration>
③、配置映射文件
<?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"> <!-- namespace:指明当前mapper需要映射的dao接口的全类名 --> <mapper namespace="com.rock.dao.UserDao"> <delete id="deleteUser" parameterType="java.lang.String"> delete from user where userid=#{userid} </delete> <delete id="deleteUserByUser" parameterType="com.rock.entities.User"> delete from user where userid=#{userid} </delete> </mapper>
④、通过SqlSession对象完成数据的CURD操作
package com.rock.service; import java.io.IOException; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.rock.dao.UserDao; import com.rock.entities.User; /**FileName: com.rock.service UserSerivce.java * TODO: * Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc. * @author: 老张 * @Date: 2019年9月18日:下午2:27:42 * @version: 1.0 * * Modification History: Date Author Version Description * ---------------------------------------------------------------------- * 2019年9月18日 老张 1.0 1.0 Version * */ public class UserSerivce { private SqlSession sqlSession=null; private UserDao userDao=null; @Before public void init(){ try { sqlSession=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml")).openSession(); userDao=sqlSession.getMapper(UserDao.class); } catch (IOException e) { e.printStackTrace(); } } @Test public void test_deleteUser(){ System.out.println(userDao.deleteUser("abc")); } @Test public void test_deleteUserByUser(){ User user=new User(); user.setUserid("abc"); userDao.deleteUserByUser(user); } @After public void commit(){ sqlSession.commit(); } }
<?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"> <!-- namespace:指明当前mapper需要映射的dao接口的全类名 --> <mapper namespace="com.rock.dao.UserDao"> <!-- public int deleteUser(String userid); --> <delete id="deleteUser" parameterType="java.lang.String"> delete from user where userid=#{userid} </delete> <!-- public int deleteUserByUser(User user); --> <delete id="deleteUserByUser" parameterType="com.rock.entities.User"> delete from user where userid=#{userid} </delete> <update id="updateUser" parameterType="User"> update user set password=#{password} where userid=#{userid} </update> <insert id="saveUser" parameterType="User"> insert into user(userid,password,qid,anwser,score) values(#{userid},#{password},#{qid},#{anwser},#{score}) </insert> <select id="queryById" parameterType="String" resultType="User"> select * from user where userid=#{userid} </select> <!-- 因为接口中定义的queryAll方法返回值是List,所以这个resultType属性要指明的是这个list所有持有的类型 List<User> all=jdbcUtil.query(User.class) List<News> all=</News>jdbcUtil.query(News.class) --> <select id="queryAll" resultType="User"> select * from user </select> </mapper>
4、动态SQL
UserDao.java
package com.rock.mybatis.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import com.rock.mybatis.entities.User;
/**FileName: com.rock.mybatis.dao UserDao.java
* TODO:
* Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc.
* @author: 老张
* @Date: 2019年9月19日:下午2:16:21
* @version: 1.0
*
* Modification History: Date Author Version Description
* ----------------------------------------------------------------------
* 2019年9月19日 老张 1.0 1.0 Version
*
*/
public interface UserDao {
public List<User> queryAll();
public User queryById(String userid);
public int updateUser(User user);
public int updateUserByIf(User user);
public List<User> queryAllByQid(String qid);
public List<User> queryAllByQid2Score(User user);
public List<User> queryAllBychooseWhenOtherwise(User user);
public List<User> queryAllByAnwser(String anwser);
public int updateUserByTrim(User user);
public int saveUser(User user);
public int deleteBatch(String[] ids);
public List<User> queryByMultiCondition(String qid,int score);
public List<User> queryByMultiConditionParam(@Param("qid1") String qid,@Param("score1")int score);
public List<User> queryByMultiConditionMap(Map<String,Object> params);
}
UserMapper.xml
<?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">
<!-- namespace:指明当前mapper需要映射的dao接口的全类名 -->
<mapper namespace="com.rock.mybatis.dao.UserDao">
<resultMap type="com.rock.mybatis.entities.User" id="baseUserMap">
<id property="userid" column="userid"/>
<result property="password" column="password"/>
<result property="qid" column="qid"/>
<result property="anwser" column="anwser"/>
<result property="score" column="score"/>
</resultMap>
<!-- select use