mybatis介绍:
mybatis 支持普通的sql查询,存储过程,高级映射的优秀持久层框架
特点:
消除了jdbc代码和手工设置相关的参数和对结果集的封装
使用方式:
注解和xml的方式
代码实现:
准备数据表:
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(20) DEFAULT NULL,
`user_tel` varchar(20) DEFAULT NULL,
`user_account` varchar(20) DEFAULT NULL,
`user_level` varchar(20) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
Create Table
CREATE TABLE `orderhis` (
`order_id` int(11) NOT NULL AUTO_INCREMENT,
`order_good` varchar(20) DEFAULT NULL,
`order_user_id` int(11) DEFAULT NULL,
`order_is_pay` varchar(20) DEFAULT NULL,
`order_good_num` int(11) DEFAULT NULL,
`order_type` varchar(20) DEFAULT NULL,
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
数据库连接配置相关:
<?xml version="1.0" enc
oding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 这是Mybatis的配置文件, 这个配置文件将会影响到Mybatis的属性。 -->
<configuration>
<!-- 配置实体类的别名,配置实体类别名的目的是为了在引用实体类时可以使用实体类的别名来代替实体类,达到简写的目的 -->
<typeAliases>
<typeAlias alias="User" type="com.mvc.model.User" />
<typeAlias alias ="Order" type="com.mvc.model.Order"/>
<!-- 为com.zhao.entity包下的所有实体类配置别名,MyBatis默认的设置别名的方式就是去除类所在的包后的简单的类名 比如com.zhao.entity.Student这个实体类的别名就会被设置成Student
<package name="com.mvc.model"/> -->
</typeAliases>
<environments default="develop">
<environment id="develop">
<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/mvctest"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 映射配置文件的。 -->
<mappers>
<mapper resource="mybatis/user-mapper.xml"/>
<mapper resource="mybatis/order-mapper.xml"/>
<mapper class="com.mvc.model.User"/>
</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" >
<mapper namespace="mybatis.user-mapper">
<resultMap id="userResultMap" type="com.mvc.model.User" >
<result column="user_id" property="userId" jdbcType="INTEGER" />
<result column="user_name" property="userName" jdbcType="VARCHAR" />
<result column="user_tel" property="userTel" jdbcType="VARCHAR" />
<result column="user_account" property="userAccount" jdbcType="VARCHAR" />
<result column="user_level" property="userLevel" jdbcType="VARCHAR"/>
</resultMap>
<select id="getUser" parameterType="int" resultType="com.mvc.model.User">
select user_id userId,user_name userName,user_tel userTel,user_account userAccount,user_level userLevel from user where user_id=#{userid}
</select>
<select id="getUserByMap" resultMap="userResultMap" parameterType="int">
select * from user
</select>
<delete id="deleteUser" parameterType="int">
delete from user where user_id=#{userid}
</delete>
<select id="getUserList" resultType="com.mvc.model.User">
select * from user
</select>
<insert id="insertUser" parameterType="java.util.List">
INSERT INTO USER(user_id,user_name,user_tel,user_account,user_level)
VALUES
<foreach collection="userlist" item="item" index="index" separator=",">
(#{item.userId},#{item.userName},#{item.userTel},#{item.userAccount},#{item.userLevel})
</foreach>
</insert>
<insert id="insertOneUser" parameterType="com.mvc.model.User" >
INSERT INTO USER(user_id,user_name,user_tel,user_account,user_level)
VALUES
(#{userId},#{userName},#{userTel},#{userAccount},#{userLevel})
</insert>
<update id="updateUser" parameterType="User">
update user
set user_name=#{userName},user_tel=#{userTel}, user_account=#{userAccount},user_level=#{userLevel}
where user_id=#{userId}
</update>
<!-- <update>
update user set user_name="#{name}" where id="#{id}"
</update> -->
<!--
<insert id="addDemo" parameterType="com.dh.demo.model.Demo" >
insert into demo (TYPE_CODE, TYPE_NAME, IN_CODE
)
values (#{typeCode,jdbcType=VARCHAR}, #{typeName,jdbcType=VARCHAR}, #{inCode,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="com.dh.demo.model.Demo" >
insert into NEWS_TYPE
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="typeCode != null" >
TYPE_CODE,
</if>
<if test="typeName != null" >
TYPE_NAME,
</if>
<if test="inCode != null" >
IN_CODE,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="typeCode != null" >
#{typeCode,jdbcType=VARCHAR},
</if>
<if test="typeName != null" >
#{typeName,jdbcType=VARCHAR},
</if>
<if test="inCode != null" >
#{inCode,jdbcType=VARCHAR},
</if>
</trim>
</insert>
-->
</mapper>
写相关junit测试方法
package com.mvc.test;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
import org.activiti.engine.impl.interceptor.SessionFactory;
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.Test;
import com.google.code.yanf4j.core.Session;
import com.mvc.model.Order;
import com.mvc.model.User;
public class MyBatisTest {
public static SqlSessionFactory getSession(){
String recource= "mybatis/mybatis-conf.xml";
Reader reader =null;
try {
reader = Resources.getResourceAsReader(recource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader);
return sqlsessionfactory;
}
// query
public User getUserById(Integer id){
String statement = "mybatis.user-mapper.getUser";
User user= getSession().openSession().selectOne(statement,4);
return user;
}
public void addUser(User user){
user.setUserId(5);
user.setUserName("jiang");
user.setUserAccount(11223);
user.setUserTel("4556");
user.setUserTel("48");
List<User> userlist =new ArrayList<User>();
userlist.add(user);
String statement= conMapper("insertUser");
//getSession().insert(statement, userlist);
}
@Test
public void addOneUser(){
User user = new User();
user.setUserId(5);
user.setUserName("jiang");
user.setUserAccount(11223);
user.setUserTel("4556");
user.setUserLevel(63);
System.out.println(conMapper("insertOneUser"));
String statement= conMapper("insertOneUser");
System.out.println(user.toString());
SqlSession session = getSession().openSession();
int result = session.insert(statement, user);
session.commit();
System.out.println("result:"+result);
}
@Test
public void udpateUser(){
User user = new User(5,"jiang","858222",222,33);
String statement= conMapper("updateUser");
SqlSession session = getSession().openSession();
int result = session.update(statement, user);
session.commit();
System.out.println(result);
}
@Test
public void getUserList(){
String statement= conMapper("getUserList");
SqlSession session = getSession().openSession(true);
List<User> list = session.selectList(statement);
System.out.println(list.size());
session.close();
System.out.println(list.toString());
}
@Test
public void getUserById(){
String statement = conMapper("getUser");
SqlSession session = getSession().openSession();
User user = session.selectOne(statement, 4);
System.out.println(user.toString());
}
@Test
public void getUserByMap(){
String statement = conMapper("getUserByMap");
SqlSession session = getSession().openSession();
User user = session.selectOne(statement, 4);
System.out.println(user.toString());
}
@Test
public void getOrderById(){
String statement = orderConMapper("getOrderById");
SqlSession session = getSession().openSession();
Order order = session.selectOne(statement,4);
System.out.println(order.toString());
}
@Test
public void getOrderById1(){
String statement = orderConMapper("getOrder");
SqlSession session = getSession().openSession();
Order order = session.selectOne(statement,4);
System.out.println(order.toString());
}
public static String conMapper(String str){
String strpre = "mybatis.user-mapper.";
return strpre+str;
}
public static String orderConMapper(String str){
String strpre = "mybatis.order-mapper.";
return strpre+str;
}
}