用MyBatis操作Mysql数据库
POJO类
package com.tangbaobao.mybits.pojo;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;
private String username;// 用户姓名
private String sex;// 性别
private Date birthday;// 生日
private String address;// 地址
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", sex=" + sex
+ ", birthday=" + birthday + ", address=" + address + "]";
}
}
操作数据库代码类
package com.tangbaobao.mybits.app;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
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.tangbaobao.mybits.pojo.User;
/**
* @author 唐学俊
* @version 2018年1月14日上午10:21:46
*
*/
public class Test1 {
//根据用户id查找用户
@Test
public void fun1() throws IOException {
// 1.加载配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
// 2.获得工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(in);
// 创建sqlsession
SqlSession session = sqlSessionFactory.openSession();
User user = session.selectOne("test.selectUserById", 10);
System.out.println(user);
session.close();
}
//模糊查询用户
@Test
public void fun2() throws IOException {
// 1.加载配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
// 2.获得工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(in);
// 创建sqlsession
SqlSession session = sqlSessionFactory.openSession();
List<User> users= session.selectList("test.selectUserName", "五");
users.forEach(System.out::println);
session.close();
}
//插入
@Test
public void fun3() throws IOException {
// 1.加载配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
// 2.获得工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(in);
// 创建sqlsession
SqlSession session = sqlSessionFactory.openSession();
User user = new User();
user.setUsername("小宝宝");
user.setBirthday(new Date());
user.setAddress("China");
user.setSex("男");
int insert = session.insert("test.insertUser",user);
System.out.println(insert);
session.commit();
System.out.println(user.getId());
session.close();
}
//修改
@Test
public void fun4() throws IOException {
// 1.加载配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
// 2.获得工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(in);
// 创建sqlsession
SqlSession session = sqlSessionFactory.openSession();
User user = new User();
user.setId(1236);
user.setUsername("小么么");
user.setBirthday(new Date());
user.setAddress("China");
user.setSex("女");
session.update("test.updateUser", user);
session.commit();
session.close();
}
//删除
@Test
public void fun5() throws IOException {
// 1.加载配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
// 2.获得工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(in);
// 创建sqlsession
SqlSession session = sqlSessionFactory.openSession();
User user = new User();
user.setId(1);
session.delete("test.deleteUser", 1);
session.commit();
session.close();
}
}
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">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?useSSL=false" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/tangbaobao/mybits/pojo/User.xml" />
</mappers>
</configuration>
Mapper映射文件
<?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.tangbaobao.mybits.mapper.UserMapper">
<!-- 根据id查询用户 -->
<select id="selectUserById" resultType="User"
parameterType="java.lang.Integer">
select * from user where id = #{v}
</select>
<!-- 模糊查询 方式一:用占位符查询(防止注入): "%"#{}"%" select * from username like "%"'五'"%"
方式二:用专用查询符号(不防止注入): like '%${value}%' -->
<select id="selectUserByName" resultType="com.tangbaobao.mybits.pojo.User"
parameterType="java.lang.String">
select * from user where username like "%"#{haha}"%"
</select>
<!-- 添加数据 -->
<insert id="insertUser" parameterType="com.tangbaobao.mybits.pojo.User">
<!-- 返回插入的主键 -->
<selectKey keyProperty="id" resultType="Integer" order = "AFTER">
select LAST_INSERT_ID()
</selectKey>
insert into user(username,birthday,address,id,sex)
values(#{username},#{birthday},#{address},#{id},#{sex})
</insert>
<!-- 修改 -->
<update id="updateUser" parameterType="com.tangbaobao.mybits.pojo.User">
update user
set username = #{username},sex = #{sex},birthday = #{birthday},address = #{address}
where id = #{id}
</update>
<!-- 删除 -->
<delete id="deleteUser" parameterType="Integer" >
delete from user where id = #{id}
</delete>
</mapper>
提示:xml文件中的元素以及属性的相关说明在代码中已经注释,再次不在累赘,嘿嘿
可以用通过配置Log4J配置文件,对sql以及相关的日志信息进行查看
在src下新建名为Log4j.properties的文件
里面填写:
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
配置文件的进阶以及小技巧会在Mybatis(四)中阐述