<project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
4.0.0
cn.itbluebox
mybatis
1.0.0-SNAPSHOT
mysql
mysql-connector-java
5.1.32
org.mybatis
mybatis
3.4.6
junit
junit
4.12
log4j
log4j
1.2.17
(4)创建相关配置文件
- jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test2
jdbc.username=root
jdbc.password=root
- log4j.properties
direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
direct messages to file mylog.log
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
set log levels - for more verbose logging change ‘info’ to ‘debug’
log4j.rootLogger=debug, stdout
- sqlMapConfig.xml
(5)创建包结构
(6)创建实体类
- Order
package cn.itbluebox.domain;
import java.util.Date;
public class Order {
private int id;
private Date ordertime;
private double total;
public Order() {
}
public Order(int id, Date ordertime, double total) {
this.id = id;
this.ordertime = ordertime;
this.total = total;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getOrdertime() {
return ordertime;
}
public void setOrdertime(Date ordertime) {
this.ordertime = ordertime;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
@Override
public String toString() {
return “Order{” +
“id=” + id +
“, ordertime=” + ordertime +
“, total=” + total +
‘}’;
}
}
- Role
package cn.itbluebox.domain;
public class Role {
private int id;
private String roleName;
private String roleDesc;
public Role() {
}
public Role(int id, String roleName, String roleDesc) {
this.id = id;
this.roleName = roleName;
this.roleDesc = roleDesc;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getRoleDesc() {
return roleDesc;
}
public void setRoleDesc(String roleDesc) {
this.roleDesc = roleDesc;
}
@Override
public String toString() {
return “Role{” +
“id=” + id +
“, roleName='” + roleName + ‘’’ +
“, roleDesc='” + roleDesc + ‘’’ +
‘}’;
}
}
- User
package cn.itbluebox.domain;
import java.util.Date;
import java.util.List;
public class User {
private int id;
private String username;
private String password;
private Date birthday;
private List roleList;
public User() {
}
public User(int id, String username, String password, Date birthday, List roleList) {
this.id = id;
this.username = username;
this.password = password;
this.birthday = birthday;
this.roleList = roleList;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public List getRoleList() {
return roleList;
}
public void setRoleList(List roleList) {
this.roleList = roleList;
}
@Override
public String toString() {
return “User{” +
“id=” + id +
“, username='” + username + ‘’’ +
“, password='” + password + ‘’’ +
“, birthday=” + birthday +
“, roleList=” + roleList +
‘}’;
}
}
- 修改Order
package cn.itbluebox.domain;
import java.util.Date;
public class Order {
private int id;
private Date ordertime;
private double total;
//当前订单属于哪一个用户
private User user;
public Order() {
}
public Order(int id, Date ordertime, double total, User user) {
this.id = id;
this.ordertime = ordertime;
this.total = total;
this.user = user;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getOrdertime() {
return ordertime;
}
public void setOrdertime(Date ordertime) {
this.ordertime = ordertime;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return “Order{” +
“id=” + id +
“, ordertime=” + ordertime +
“, total=” + total +
“, user=” + user +
‘}’;
}
}
2、引入处理时间的类MyDateTypeHandler ,
因为数据库当中的时间使用的是long类型的数据,如果您使用的datetime则不需要
- 创建MyDateTypeHandler
package cn.itbluebox.handler;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
public class MyDateTypeHandler extends BaseTypeHandler {
//将Java 类型转换为数据库需要的类型
public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
long time = date.getTime();
preparedStatement.setLong(i,time);
}
//将数据中的类型 转换为java类型
//String 类型 要转换的字段名称
//ResultSet 查询出的结果集
public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
//获得结果集中需要的数据(long)转换为Date
long aLong = resultSet.getLong(s);
Date date = new Date(aLong);
return date;
}
//将数据库当中的类型 转换为Java的类型
public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {
long aLong = resultSet.getLong(i);
Date date = new Date(aLong);
return date;
}
//将数据库中的类型 转换为Java类型
public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
long aLong = callableStatement.getLong(i);
Date date = new Date(aLong);
return date;
}
}
- typeHandlers标签
3、注解替代的映射文件,所以我们只需要加载使用了注解的Mapper接口即可
在上面的配置文件当中以及配置好了,在这里只做简单的说明
4、User的增删改查注解使用
4.1 增加
(1)创建UserMapper
实现添加User的代码
package cn.itbluebox.mapper;
import cn.itbluebox.domain.User;
import org.apache.ibatis.annotations.Insert;
public interface UserMapper {
@Insert(“insert into user values(#{id},#{username},#{password},#{birthday})”)
public void save(User user);
}
(2)创建MyBatisTestUser的测试类
package cn.itbluebox;
import cn.itbluebox.domain.User;
import cn.itbluebox.mapper.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 org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
public class MyBatisTestUser {
/*
@Before方法生成一个对象,然后在@Test里调用。
*/
private UserMapper usermapper;
@Before
public void before() throws IOException{
InputStream resourceAsStream = Resources.getResourceAsStream(“sqlMapConfig.xml”);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
usermapper = sqlSession.getMapper(UserMapper.class);
}
@Test
public void testAdd(){
User user = new User();
user.setUsername(“测试数据”);
user.setPassword(“123”);
user.setBirthday(new Date());
usermapper.save(user);
}
}
运行测试
插入成功
4.2 修改
(1)在UserMapper当中创建update
@Update(“update user set username=#{username},password=#{password} where id=#{id}”)
public void update(User user);
(2)在MyBatisTestUser的测试方法testUpdate
@Test
public void testUpdate() throws IOException{
User user = new User();
user.setId(1);
user.setUsername(“张三改”);
user.setPassword(“321”);
usermapper.update(user);
}
运行测试
修改成功
4.3 删除
(1)在UserMapper当中创建delete
@Delete(“delete from user where id = #{id}”)
public void delete(int id);
(2)在MyBatisTestUser的测试方法testDelete
@Test
public void testDelete() throws IOException{
usermapper.delete(1);
}
运行测试
(3)为了后面的演示正常我们在插入id为1的数据字段
@Test
public void testAdd(){
User user = new User();
user.setId(1);
user.setUsername(“莎莎”);
user.setPassword(“123”);
user.setBirthday(new Date());
usermapper.save(user);
}
运行测试
4.4 查询一个
(1)在UserMapper当中创建findById
@Select(“select * from user where id = #{id}”)
public User findById(int id);
(2)在MyBatisTestUser的测试方法testFindById
@Test
public void testFindById() throws IOException{
User user = usermapper.findById(1);
System.out.println(user);
}
运行测试
4.5 查询所有
(1)在UserMapper当中创建findAll
@Select(“select * from user”)
public List findAll();
(2)在MyBatisTestUser的测试方法testFindAll
@Test
public void testFindAll() throws IOException{
List users = usermapper.findAll();
for (User user : users) {
System.out.println(user);
}
}
运行测试
5、 一对一查询
(1)一对一查询的模型
用户表和订单表的关系为,一个用户有多个订单,
一个订单只从属于一个用户
一对一查询的需求:
查询一个订单,与此同时查询出该订单所属的用户
(2)一对一查询的语句
对应的sql语句:
select * from user u,order
o where u.id = o.uid
在这里使用的是Order当中的uid字段所以我们需要修改Order表添加uid字段
设置一些数据
user_order中间表暂时不用
(3)创建OrderMapper接口
使用注解配置Mapper,创建findAll方法
package cn.itbluebox.mapper;
import cn.itbluebox.domain.Order;
import cn.itbluebox.domain.User;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import java.util.List;
Docker步步实践
目录文档:
①Docker简介
②基本概念
③安装Docker
④使用镜像:
⑤操作容器:
⑥访问仓库:
⑦数据管理:
⑧使用网络:
⑨高级网络配置:
⑩安全:
⑪底层实现:
⑫其他项目:
使用注解配置Mapper,创建findAll方法
package cn.itbluebox.mapper;
import cn.itbluebox.domain.Order;
import cn.itbluebox.domain.User;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import java.util.List;
Docker步步实践
目录文档:
[外链图片转存中…(img-pzR0tkXW-1714338139941)]
[外链图片转存中…(img-rib9nsRD-1714338139942)]
①Docker简介
②基本概念
③安装Docker
[外链图片转存中…(img-naEPKw9G-1714338139942)]
④使用镜像:
[外链图片转存中…(img-4eUXz3om-1714338139942)]
⑤操作容器:
[外链图片转存中…(img-ewAdwwLK-1714338139943)]
⑥访问仓库:
[外链图片转存中…(img-yShXSsF6-1714338139943)]
⑦数据管理:
[外链图片转存中…(img-UiLuFqB2-1714338139943)]
⑧使用网络:
[外链图片转存中…(img-4tPt7eSE-1714338139944)]
⑨高级网络配置:
[外链图片转存中…(img-yK0PTa6z-1714338139944)]
⑩安全:
[外链图片转存中…(img-3mAFyDRh-1714338139944)]
⑪底层实现:
[外链图片转存中…(img-CaEaz0tg-1714338139945)]
⑫其他项目:
[外链图片转存中…(img-BfsCNdw8-1714338139945)]